You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemds.apache.org by ba...@apache.org on 2021/03/01 14:57:52 UTC

[systemds] branch master updated: [SYSTEMDS-2871] Python API Autogenerator allow no docs

This is an automated email from the ASF dual-hosted git repository.

baunsgaard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git


The following commit(s) were added to refs/heads/master by this push:
     new 21b5027  [SYSTEMDS-2871] Python API Autogenerator allow no docs
21b5027 is described below

commit 21b5027934a0f7caa736bd123972e23c83186283
Author: baunsgaard <ba...@tugraz.at>
AuthorDate: Mon Mar 1 15:54:07 2021 +0100

    [SYSTEMDS-2871] Python API Autogenerator allow no docs
---
 scripts/builtin/dbscan.dml                         |   4 +-
 scripts/builtin/gnmf.dml                           |   2 +-
 scripts/builtin/lasso.dml                          |   2 +-
 scripts/builtin/pnmf.dml                           |   2 +-
 scripts/builtin/statsNA.dml                        |   2 +-
 src/main/python/generator/generator.py             | 127 +++++++++++----------
 src/main/python/generator/parser.py                |  92 +++++++--------
 .../python/systemds/operator/algorithm/__init__.py |  75 ++++++++++--
 .../algorithm/{__init__.py => builtin/abstain.py}  |  27 +++--
 .../systemds/operator/algorithm/builtin/als.py     |  51 +++++++++
 .../systemds/operator/algorithm/builtin/alsCG.py   |  51 +++++++++
 .../systemds/operator/algorithm/builtin/alsDS.py   |  52 +++++++++
 .../{__init__.py => builtin/alsPredict.py}         |  28 +++--
 .../systemds/operator/algorithm/builtin/arima.py   |  53 +++++++++
 .../systemds/operator/algorithm/builtin/bandit.py  |  44 +++++++
 .../algorithm/{__init__.py => builtin/bivar.py}    |  32 ++++--
 .../{__init__.py => builtin/components.py}         |  26 +++--
 .../{__init__.py => builtin/confusionMatrix.py}    |  30 +++--
 .../algorithm/{__init__.py => builtin/cor.py}      |  25 ++--
 .../algorithm/{__init__.py => builtin/cspline.py}  |  27 +++--
 .../{__init__.py => builtin/csplineDS.py}          |  26 +++--
 .../algorithm/{__init__.py => builtin/cvlm.py}     |  27 +++--
 .../algorithm/{__init__.py => builtin/dbscan.py}   |  26 +++--
 .../operator/algorithm/builtin/decisionTree.py     |  49 ++++++++
 .../{__init__.py => builtin/discoverFD.py}         |  26 +++--
 .../algorithm/{__init__.py => builtin/dist.py}     |  25 ++--
 .../{__init__.py => builtin/getAccuracy.py}        |  27 +++--
 .../algorithm/{__init__.py => builtin/glm.py}      |  27 +++--
 .../algorithm/{__init__.py => builtin/gmm.py}      |  26 +++--
 .../operator/algorithm/builtin/gmmPredict.py       |  49 ++++++++
 .../algorithm/{__init__.py => builtin/gnmf.py}     |  26 +++--
 .../{__init__.py => builtin/gridSearch.py}         |  27 +++--
 .../{__init__.py => builtin/hyperband.py}          |  30 +++--
 .../{__init__.py => builtin/img_brightness.py}     |  25 ++--
 .../algorithm/{__init__.py => builtin/img_crop.py} |  25 ++--
 .../{__init__.py => builtin/img_mirror.py}         |  25 ++--
 .../{__init__.py => builtin/imputeByFD.py}         |  26 +++--
 .../{__init__.py => builtin/imputeByMean.py}       |  25 ++--
 .../{__init__.py => builtin/imputeByMedian.py}     |  25 ++--
 .../{__init__.py => builtin/intersect.py}          |  26 +++--
 .../algorithm/{__init__.py => builtin/knnbf.py}    |  26 +++--
 .../algorithm/{__init__.py => builtin/lasso.py}    |  35 ++++--
 .../algorithm/{__init__.py => builtin/lmCG.py}     |  27 +++--
 .../algorithm/{__init__.py => builtin/lmDS.py}     |  27 +++--
 .../{__init__.py => builtin/logSumExp.py}          |  26 +++--
 .../algorithm/{__init__.py => builtin/msvm.py}     |  27 +++--
 .../{__init__.py => builtin/msvmPredict.py}        |  30 +++--
 .../algorithm/{__init__.py => builtin/na_locf.py}  |  26 +++--
 .../{__init__.py => builtin/naivebayes.py}         |  27 +++--
 .../{__init__.py => builtin/normalize.py}          |  25 ++--
 .../algorithm/{__init__.py => builtin/outlier.py}  |  25 ++--
 .../{__init__.py => builtin/outlierByArima.py}     |  26 +++--
 .../{__init__.py => builtin/outlierByIQR.py}       |  26 +++--
 .../{__init__.py => builtin/outlierBySd.py}        |  26 +++--
 .../algorithm/{__init__.py => builtin/pnmf.py}     |  26 +++--
 .../systemds/operator/algorithm/builtin/ppca.py    |  48 ++++++++
 .../algorithm/{__init__.py => builtin/scale.py}    |  25 ++--
 .../{__init__.py => builtin/scaleApply.py}         |  27 +++--
 .../algorithm/{__init__.py => builtin/sigmoid.py}  |  25 ++--
 .../{__init__.py => builtin/slicefinder.py}        |  27 +++--
 .../algorithm/{__init__.py => builtin/smote.py}    |  26 +++--
 .../algorithm/{__init__.py => builtin/split.py}    |  27 +++--
 .../algorithm/{__init__.py => builtin/statsNA.py}  |  26 +++--
 .../algorithm/{__init__.py => builtin/steplm.py}   |  27 +++--
 .../algorithm/{__init__.py => builtin/univar.py}   |  26 +++--
 .../{__init__.py => builtin/vectorToCsv.py}        |  25 ++--
 .../{__init__.py => builtin/winsorize.py}          |  25 ++--
 .../algorithm/{__init__.py => builtin/xdummy1.py}  |  25 ++--
 .../algorithm/{__init__.py => builtin/xdummy2.py}  |  25 ++--
 69 files changed, 1456 insertions(+), 653 deletions(-)

diff --git a/scripts/builtin/dbscan.dml b/scripts/builtin/dbscan.dml
index 74d4040..ea8c6fd 100644
--- a/scripts/builtin/dbscan.dml
+++ b/scripts/builtin/dbscan.dml
@@ -30,8 +30,8 @@
 # minPts    Int              5          Number of points in a neighborhood for a point to be considered as a core point (includes the point itself).
 #
 
-m_dbscan = function (Matrix[double] X, Double eps = 0.5, Integer minPts = 5)
-    return (Matrix[double] clusterMembers)
+m_dbscan = function (Matrix[Double] X, Double eps = 0.5, Integer minPts = 5)
+    return (Matrix[Double] clusterMembers)
 {
     #check input parameter assertions
     if(minPts < 0) { stop("DBSCAN: Stopping due to invalid inputs: minPts should be greater than 0"); }
diff --git a/scripts/builtin/gnmf.dml b/scripts/builtin/gnmf.dml
index a5f3e88..3a3acb9 100644
--- a/scripts/builtin/gnmf.dml
+++ b/scripts/builtin/gnmf.dml
@@ -25,7 +25,7 @@
 # Distributed nonnegative matrix factorization for web-scale dyadic 
 # data analysis on mapreduce. WWW 2010: 681-690]
 
-m_gnmf = function(Matrix[Double] X, Integer rnk, Double eps = 10^-8, Integer maxi = 10) 
+m_gnmf = function(Matrix[Double] X, Integer rnk, Double eps = 1e-8, Integer maxi = 10) 
   return (Matrix[Double] W, Matrix[Double] H) 
 {
   #initialize W and H
diff --git a/scripts/builtin/lasso.dml b/scripts/builtin/lasso.dml
index 3edadd9..6fc6027 100644
--- a/scripts/builtin/lasso.dml
+++ b/scripts/builtin/lasso.dml
@@ -37,7 +37,7 @@
 # w               Double   ---        model matrix
 
 
-m_lasso = function(Matrix[Double] X, Matrix[Double] y, Double tol = 10^(-15), 
+m_lasso = function(Matrix[Double] X, Matrix[Double] y, Double tol = 1e-15, 
   Integer M = 5, Double tau = 1, Integer maxi = 100, Boolean verbose = TRUE)
   return(Matrix[Double] w)
 {
diff --git a/scripts/builtin/pnmf.dml b/scripts/builtin/pnmf.dml
index 42bc366..b31fd57 100644
--- a/scripts/builtin/pnmf.dml
+++ b/scripts/builtin/pnmf.dml
@@ -25,7 +25,7 @@
 # Distributed nonnegative matrix factorization for web-scale dyadic 
 # data analysis on mapreduce. WWW 2010: 681-690]
 
-m_pnmf = function(Matrix[Double] X, Integer rnk, Double eps = 10^-8, Integer maxi = 10, Boolean verbose=TRUE) 
+m_pnmf = function(Matrix[Double] X, Integer rnk, Double eps = 1e-8, Integer maxi = 10, Boolean verbose=TRUE) 
   return (Matrix[Double] W, Matrix[Double] H) 
 {
   #initialize W and H
diff --git a/scripts/builtin/statsNA.dml b/scripts/builtin/statsNA.dml
index d858966..5f58c56 100644
--- a/scripts/builtin/statsNA.dml
+++ b/scripts/builtin/statsNA.dml
@@ -43,7 +43,7 @@
 # ------------------------------------------------------------------------------
 
 m_statsNA = function(Matrix[Double] X, Integer bins = 4, Boolean verbose = TRUE)
-  return( Matrix[Double] stats) 
+  return(Matrix[Double] stats) 
 {
   longest_nan_gap = -1
   most_frequent_nan_gap = -1
diff --git a/src/main/python/generator/generator.py b/src/main/python/generator/generator.py
index c1a9ce2..190f176 100644
--- a/src/main/python/generator/generator.py
+++ b/src/main/python/generator/generator.py
@@ -24,40 +24,43 @@ import json
 import os
 import re
 from parser import FunctionParser
+import traceback
 
 
 class PythonAPIFileGenerator(object):
 
-    target_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'systemds', 'operator', 'algorithm', 'builtin')
+    target_path = os.path.join(os.path.dirname(os.path.dirname(
+        __file__)), 'systemds', 'operator', 'algorithm', 'builtin')
     licence_path = os.path.join('resources', 'template_python_script_license')
     template_path = os.path.join('resources', 'template_python_script_imports')
-    
-    source_path :str
-    licence : str
+
+    source_path: str
+    licence: str
     imports: str
-    generated_by : str
-    generated_from : str
+    generated_by: str
+    generated_from: str
 
-    init_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'systemds', 'operator', 'algorithm', '__init__.py')
+    init_path = os.path.join(os.path.dirname(os.path.dirname(
+        __file__)), 'systemds', 'operator', 'algorithm', '__init__.py')
     init_import = u"from .builtin.{function} import {function} \n"
     init_all = u"__all__ = {functions} \n"
 
-    def __init__(self, source_path:str, extension: str='py'):
+    def __init__(self, source_path: str, extension: str = 'py'):
         super(PythonAPIFileGenerator, self).__init__()
         self.source_path = source_path
 
         self.extension = '.{extension}'.format(extension=extension)
-        os.makedirs(self.__class__.target_path, exist_ok = True)
+        os.makedirs(self.__class__.target_path, exist_ok=True)
         self.function_names = list()
         path = os.path.dirname(__file__)
-        
+
         with open(os.path.join(path, self.__class__.template_path), 'r') as f:
             self.imports = f.read()
         with open(os.path.join(path, self.__class__.licence_path), 'r') as f:
             self.licence = f.read()
-        
-        self.generated_by =   "# Autogenerated By   : src/main/python/generator/generator.py\n"
-        self.generated_from = "# Autogenerated From : " 
+
+        self.generated_by = "# Autogenerated By   : src/main/python/generator/generator.py\n"
+        self.generated_from = "# Autogenerated From : "
 
     def generate_file(self, filename: str, file_content: str, dml_file: str):
         """
@@ -70,7 +73,8 @@ class PythonAPIFileGenerator(object):
         with open(target_file, "w") as new_script:
             new_script.write(self.licence)
             new_script.write(self.generated_by)
-            new_script.write((self.generated_from + dml_file + "\n").replace("../","").replace("src/main/python/generator/",""))
+            new_script.write((self.generated_from + dml_file + "\n").replace(
+                "../", "").replace("src/main/python/generator/", ""))
             new_script.write(self.imports)
             new_script.write(file_content)
 
@@ -84,7 +88,8 @@ class PythonAPIFileGenerator(object):
             for f in self.function_names:
                 init_file.write(self.init_import.format(function=f))
             init_file.write("\n")
-            init_file.write(self.init_all.format(functions=self.function_names).replace("'", ""))
+            init_file.write(self.init_all.format(
+                functions=self.function_names).replace("'", ""))
 
 
 class PythonAPIFunctionGenerator(object):
@@ -100,23 +105,21 @@ class PythonAPIFunctionGenerator(object):
     kwargs_result = u"params_dict.update(kwargs)"
 
     matrix_check_template = u"\n    {param}._check_matrix_op()"
-    shape_check_template = u"""\n    if {param}.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={{s}}) while a minimum of 1 is required."
-                         .format(s={param}.shape))"""
-    type_mapping_file = os.path.join('resources','type_mapping.json')
+
+    type_mapping_file = os.path.join('resources', 'type_mapping.json')
 
     type_mapping_pattern = r"^([^\[\s]+)"
 
     path = os.path.dirname(__file__)
     type_mapping_path = os.path.join(path, type_mapping_file)
-    # print(type_mapping_path)
+
     with open(type_mapping_path, 'r') as mapping:
         type_mapping = json.load(mapping)
 
     def __init__(self):
         super(PythonAPIFunctionGenerator, self).__init__()
 
-    def generate_function(self, data:dict) -> str:
+    def generate_function(self, data: dict) -> str:
         """
         Generates function definition for PythonAPI
         @param data:
@@ -138,12 +141,6 @@ class PythonAPIFunctionGenerator(object):
             data['return_values'],
             data['function_name']
         )
-        #print(parameters)
-        #print(function_name)
-        #print(header)
-        #print(value_checks)
-        #print(params_dict)
-        #print(api_call)
         return self.__class__.api_template.format(
             function_name=function_name,
             parameters=parameters,
@@ -160,7 +157,8 @@ class PythonAPIFunctionGenerator(object):
         for param in parameters:
             # map data types
             pattern = self.__class__.type_mapping_pattern
-            param = tuple([self.__class__.type_mapping["type"].get(re.search(pattern, str(item).lower()).group() if item else str(item).lower(), item) for item in param])
+            param = tuple([self.__class__.type_mapping["type"].get(re.search(pattern, str(
+                item).lower()).group() if item else str(item).lower(), item) for item in param])
             if param[2] is not None:
                 has_optional = True
             else:
@@ -211,7 +209,7 @@ class PythonAPIFunctionGenerator(object):
         parameters: List[Tuple[str]],
         return_values: List[Tuple[str]],
         function_name: str
-        ) -> str:
+    ) -> str:
         length = len(return_values)
         result = "OperationNode({params})"
         param_string = ""
@@ -221,14 +219,14 @@ class PythonAPIFunctionGenerator(object):
             output_type_list = ""
             for value in return_values:
                 output_type = re.search(pattern, value[1])[0].upper()
-                #print(output_type)
+                # print(output_type)
                 if len(output_type_list):
                     output_type_list = "{output_type_list}, ".format(
                         output_type_list=output_type_list
                     )
                 else:
                     output_type_list = "output_types=["
-                
+
                 output_type_list = "{output_type_list}OutputType.{typ}".format(
                     output_type_list=output_type_list,
                     typ=output_type
@@ -242,42 +240,47 @@ class PythonAPIFunctionGenerator(object):
             )
         else:
             value = return_values[0]
-            output_type = re.search(pattern, value[1])[0].upper()
-            #print(output_type)
+            output_type = re.search(pattern, value[1])
+            if(output_type):
+                output_type = output_type[0].upper()
+            else:
+                raise AttributeError("Error in pattern match")
+            # print(output_type)
         result = "{param}.sds_context, \'{function_name}\', named_input_nodes=params_dict, " \
                  "output_type=OutputType.{output_type}".format(
-            param=param[0],
-            function_name=function_name,
-            output_type=output_type
-        )
+                     param=param[0],
+                     function_name=function_name,
+                     output_type=output_type
+                 )
         result = "OperationNode({params})".format(params=result)
         return result
 
-    def format_value_checks(self, parameters :List[Tuple[str]]) -> str:
+    def format_value_checks(self, parameters: List[Tuple[str]]) -> str:
         result = ""
         for param in parameters:
             if "matrix" not in param[1].lower():
                 # This check is only needed for Matrix types
                 continue
-            matrix_check = self.__class__.matrix_check_template.format(param=param[0])
+            matrix_check = self.__class__.matrix_check_template.format(
+                param=param[0])
             # shape_check = self.__class__.shape_check_template.format(param=param[0])
             result = "{result}{matrix_check}".format(
                 result=result,
                 matrix_check=matrix_check,
             )
-                # shape_check=shape_check
+            # shape_check=shape_check
         return result
-    
+
 
 class PythonAPIDocumentationGenerator(object):
-    python_multi_cmnt = "\"\"\""
+
     param_str = "\n    :param {pname}: {meaning}"
     return_str = "\n    :return: \'OperationNode\' containing {meaning} \n"
 
     def __init__(self):
         super(PythonAPIDocumentationGenerator, self).__init__()
 
-    def generate_documentation(self, data:dict) -> str:
+    def generate_documentation(self, data: dict) -> str:
         """
         Generates function header for PythonAPI
         @param data:
@@ -291,16 +294,21 @@ class PythonAPIDocumentationGenerator(object):
         input_param = self.header_parameter_string(data["parameters"])
         output_param = self.header_return_string(data["return_values"])
 
-        return self.__class__.python_multi_cmnt + input_param + output_param + "    " + self.__class__.python_multi_cmnt
+        if(len(input_param) < 1 and len(output_param) < 1):
+            return ""
+        return '"""' + \
+            input_param + self.__class__.return_str.format(meaning=output_param.lower()) + \
+            "    " + '"""'
 
-    def header_parameter_string(self, parameter:dict) -> str:
+    def header_parameter_string(self, parameter: dict) -> str:
         parameter_str = ""
         for param in parameter:
-            parameter_str += self.__class__.param_str.format(pname=param[0], meaning=param[3])
+            parameter_str += self.__class__.param_str.format(
+                pname=param[0], meaning=param[3])
 
         return parameter_str
 
-    def header_return_string(self, parameter:dict) -> str:
+    def header_return_string(self, parameter: dict) -> str:
         meaning_str = ""
 
         for param in parameter:
@@ -309,33 +317,34 @@ class PythonAPIDocumentationGenerator(object):
             else:
                 meaning_str += param[3]
 
-        return self.__class__.return_str.format(meaning=meaning_str.lower())
+        return meaning_str
 
 
 if __name__ == "__main__":
     if "python" in os.getcwd():
-        source_path = os.path.join("../../../",'scripts', 'builtin' )
+        source_path = os.path.join("../../../", 'scripts', 'builtin')
     else:
-        source_path = os.path.join(os.path.dirname(__file__),"../../../../",'scripts', 'builtin')
+        source_path = os.path.join(os.path.dirname(
+            __file__), "../../../../", 'scripts', 'builtin')
     file_generator = PythonAPIFileGenerator(source_path)
     fun_generator = PythonAPIFunctionGenerator()
-    f_parser = FunctionParser(source_path )
+    f_parser = FunctionParser(source_path)
     doc_generator = PythonAPIDocumentationGenerator()
 
     for dml_file in f_parser.files():
         try:
             header_data = f_parser.parse_header(dml_file)
             data = f_parser.parse_function(dml_file)
-            # TODO: define a set of dml script that would not fail this check
             f_parser.check_parameters(header_data, data)
+            data['function_header'] = doc_generator.generate_documentation(
+                header_data)
+            script_content = fun_generator.generate_function(data)
         except Exception as e:
-            # print("[WARNING] Skipping file \'{file_name}\'.".format(file_name = dml_file))
+            traceback.print_exc()
+            print("[ERROR] error in : \'{file_name}\'.".format(
+                file_name=dml_file))
             continue
-        data['function_header'] = doc_generator.generate_documentation(header_data)
-        script_content = fun_generator.generate_function(data)
-        file_generator.generate_file(data["function_name"], script_content, dml_file)
+        file_generator.generate_file(
+            data["function_name"], script_content, dml_file)
 
     file_generator.generate_init_file()
-
-
-
diff --git a/src/main/python/generator/parser.py b/src/main/python/generator/parser.py
index 14883f4..135d858 100644
--- a/src/main/python/generator/parser.py
+++ b/src/main/python/generator/parser.py
@@ -29,7 +29,7 @@ class FunctionParser(object):
     header_input_pattern = r"^[ \t\n]*[#]+[ \t\n]*input[ \t\n\w:;.,#]*[\s#\-]*[#]+[\w\s\d:,.()\" \t\n\-]*[\s#\-]*$"
     header_output_pattern = r"[\s#\-]*[#]+[ \t]*(return|output)[ \t\w:;.,#]*[\s#\-]*[#]+[\w\s\d:,.()\" \t\-]*[\s#\-]*$"
     function_pattern = r"^m_[\w]+[ \t\n]+=[ \t\n]+function[^#{]*"
-    parameter_pattern = r"^m_[\w]+[\s]+=[\s]+function\(([\w\[\]\s,\d=.\-]*)\)[\s]*return[\s]*\(([\w\[\]\s,\d=.\-]*)\)"
+    parameter_pattern = r"^m_[\w]+[\s]+=[\s]+function[\s]*\([\s]*([\w\[\]\s,\d=.\-'\"_\.]*)[\s]*\)[\s]*return[\s]*\([\s]*([\w\[\]\s,\d=.\-_]*)[\s]*\)[\s]*"
     header_parameter_pattern = r"[\s#\-]*[#]+[ \t]*([\w|-]+)[\s]+([\w]+)[\s]+([\w,\d.\"\-]+)[\s]+([\w|\W]+)"
     divider_pattern = r"[\s#\-]*"
 
@@ -57,47 +57,45 @@ class FunctionParser(object):
         """
         file_name = os.path.basename(path)
         function_name, extension = os.path.splitext(file_name)
-        try:
-            function_definition = self.find_function_definition(path)
-        except AttributeError as e:
-            print("[ERROR]   Could not find function_definition for file \'{file_name}\'.".format(
-                file_name=file_name
-            ))
-            raise e
-
-        # print(function_definition)
+        function_definition = self.find_function_definition(path)
         pattern = re.compile(
             self.__class__.parameter_pattern, flags=re.I | re.M)
         match = pattern.match(function_definition)
-        param_str, retval_str = match.group(1, 2)
-        parameters = self.get_parameters(param_str)
-        return_values = self.get_parameters(retval_str)
+        if match:
+            param_str, retval_str = match.group(1, 2)
+            parameters = self.get_parameters(param_str)
+            return_values = self.get_parameters(retval_str)
+        else:
+            # TODO handle default matrix variables. 
+            raise AttributeError("Unable to match to function definition:\n" + function_definition)
         data = {'function_name': function_name,
-                'parameters': parameters, 'return_values': return_values}
+                    'parameters': parameters, 'return_values': return_values}
         return data
 
     def get_parameters(self, param_str: str):
-        # pattern = re.compile(r"[\r\v\n\t]")
-        # param_str = pattern.sub(" ", param_str)
-        # print(param_str)
+        
         params = re.split(r",[\s]*", param_str)
+        
         parameters = []
         for param in params:
-            splitted = re.split(r"[\s]+", param)
-            dml_type = splitted[0]
-            name = splitted[1]
-            default_value = None
-
-            if len(splitted) == 4:
-                if splitted[2] == "=":
-                    default_value = splitted[3]
-            elif "=" in name:
-                default_split = name.split("=")
-                name = default_split[0]
-                default_value = default_split[1]
-            parameters.append((name, dml_type, default_value))
+            parameters.append(self.parse_single_parameter(param))
         return parameters
 
+    def parse_single_parameter(self, param: str):
+        splitted = re.split(r"[\s]+", param)
+        dml_type = splitted[0]
+        name = splitted[1]
+        default_value = None
+
+        if len(splitted) == 4:
+            if splitted[2] == "=":
+                default_value = splitted[3]
+        elif "=" in name:
+            default_split = name.split("=")
+            name = default_split[0]
+            default_value = default_split[1]
+        return (name, dml_type, default_value)
+
     def get_header_parameters(self, param_str: str):
         parameters = list()
         pattern = re.compile(
@@ -168,15 +166,20 @@ class FunctionParser(object):
             content = f.read()
         match = re.search(pattern=self.__class__.function_pattern,
                           string=content, flags=re.I | re.M)
-        start = match.start()
-        end = match.end()
-        return content[start:end]
+        if match:
+            start = match.start()
+            end = match.end()
+            return content[start:end]
+        else:
+            raise AttributeError("Function definition not found in : " + path)
 
     def files(self):
         """
         generator function to find files in self.path, that end with self.extension
         """
-        for f in os.listdir(self.path):
+        files = os.listdir(self.path)
+        files.sort()
+        for f in files:
             name, extension = os.path.splitext(f)
             if extension == self.extension:
                 yield os.path.join(self.path, f)
@@ -187,17 +190,15 @@ class FunctionParser(object):
         path = os.path.dirname(__file__)
         type_mapping_path = os.path.join(
             path, self.__class__.type_mapping_file)
-        # print(type_mapping_path)
+
         with open(type_mapping_path, 'r') as mapping:
             type_mapping = json.load(mapping)
 
         header_param_names = [p[0].lower() for p in header["parameters"]]
         data_param_names = [p[0].lower() for p in data["parameters"]]
         if header_param_names != data_param_names:
-            print("[ERROR]   The parameter names of the function does not match with the documentation "
+            print("[WARNING] The parameter names of the function does not match with the documentation "
                   "for file \'{file_name}\'.".format(file_name=data["function_name"]))
-            raise ValueError(
-                "The parameter names of the function does not match with the documentation")
 
         header_param_type = [p[1].lower() for p in header["parameters"]]
         header_param_type = [type_mapping["type"].get(
@@ -207,18 +208,7 @@ class FunctionParser(object):
         data_param_type = [type_mapping["type"].get(
             re.search(type_mapping_pattern, str(item).lower()).group() if item else str(item).lower(), item)
             for item in data_param_type]
-        # data_param_type = [type_mapping["type"].get(item, item) for item in data_param_type]
+
         if header_param_type != data_param_type:
-            print("[ERROR]   The parameter type of the function does not match with the documentation "
+            print("[WARNING] The parameter type of the function does not match with the documentation "
                   "for file \'{file_name}\'.".format(file_name=data["function_name"]))
-            raise ValueError(
-                "The parameter type of the function does not match with the documentation")
-
-        # header_param_default = [p[2].lower() for p in header["parameters"]]
-        # header_param_default = [type_mapping["default"].get(item, item).lower() for item in header_param_default]
-        # data_param_default = [str(p[2]).lower() for p in data["parameters"]]
-        # data_param_default = [type_mapping["default"].get(item, item).lower() for item in data_param_default]
-        # if header_param_default != data_param_default:
-        #     print("[ERROR]   The parameter default of the function does not match with the documentation "
-        #           "for file \'{file_name}\'.".format(file_name=data["function_name"]))
-        #     raise ValueError("The parameter default of the function does not match with the documentation")
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/__init__.py
index 80e5b67..90e9de9 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/__init__.py
@@ -21,14 +21,75 @@
 
 # Autogenerated By   : src/main/python/generator/generator.py
 
+from .builtin.abstain import abstain 
+from .builtin.als import als 
+from .builtin.alsCG import alsCG 
+from .builtin.alsDS import alsDS 
+from .builtin.alsPredict import alsPredict 
+from .builtin.alsTopkPredict import alsTopkPredict 
+from .builtin.arima import arima 
+from .builtin.bandit import bandit 
+from .builtin.bivar import bivar 
+from .builtin.components import components 
+from .builtin.confusionMatrix import confusionMatrix 
+from .builtin.cor import cor 
+from .builtin.cspline import cspline 
+from .builtin.csplineDS import csplineDS 
+from .builtin.cvlm import cvlm 
+from .builtin.dbscan import dbscan 
+from .builtin.decisionTree import decisionTree 
+from .builtin.discoverFD import discoverFD 
+from .builtin.dist import dist 
+from .builtin.getAccuracy import getAccuracy 
+from .builtin.glm import glm 
+from .builtin.gmm import gmm 
+from .builtin.gmmPredict import gmmPredict 
+from .builtin.gnmf import gnmf 
+from .builtin.gridSearch import gridSearch 
+from .builtin.hyperband import hyperband 
+from .builtin.img_brightness import img_brightness 
+from .builtin.img_crop import img_crop 
+from .builtin.img_mirror import img_mirror 
+from .builtin.imputeByFD import imputeByFD 
+from .builtin.imputeByMean import imputeByMean 
+from .builtin.imputeByMedian import imputeByMedian 
+from .builtin.intersect import intersect 
+from .builtin.kmeans import kmeans 
+from .builtin.kmeansPredict import kmeansPredict 
+from .builtin.knnbf import knnbf 
 from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
+from .builtin.lasso import lasso 
 from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
+from .builtin.lmCG import lmCG 
+from .builtin.lmDS import lmDS 
+from .builtin.logSumExp import logSumExp 
+from .builtin.msvm import msvm 
+from .builtin.msvmPredict import msvmPredict 
+from .builtin.multiLogReg import multiLogReg 
+from .builtin.multiLogRegPredict import multiLogRegPredict 
+from .builtin.na_locf import na_locf 
+from .builtin.naivebayes import naivebayes 
+from .builtin.normalize import normalize 
+from .builtin.outlier import outlier 
+from .builtin.outlierByArima import outlierByArima 
+from .builtin.outlierByIQR import outlierByIQR 
+from .builtin.outlierBySd import outlierBySd 
 from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from .builtin.pnmf import pnmf 
+from .builtin.ppca import ppca 
+from .builtin.scale import scale 
+from .builtin.scaleApply import scaleApply 
+from .builtin.sigmoid import sigmoid 
+from .builtin.slicefinder import slicefinder 
+from .builtin.smote import smote 
+from .builtin.split import split 
+from .builtin.statsNA import statsNA 
+from .builtin.steplm import steplm 
+from .builtin.toOneHot import toOneHot 
+from .builtin.univar import univar 
+from .builtin.vectorToCsv import vectorToCsv 
+from .builtin.winsorize import winsorize 
+from .builtin.xdummy1 import xdummy1 
+from .builtin.xdummy2 import xdummy2 
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+__all__ = [abstain, als, alsCG, alsDS, alsPredict, alsTopkPredict, arima, bandit, bivar, components, confusionMatrix, cor, cspline, csplineDS, cvlm, dbscan, decisionTree, discoverFD, dist, getAccuracy, glm, gmm, gmmPredict, gnmf, gridSearch, hyperband, img_brightness, img_crop, img_mirror, imputeByFD, imputeByMean, imputeByMedian, intersect, kmeans, kmeansPredict, knnbf, l2svm, lasso, lm, lmCG, lmDS, logSumExp, msvm, msvmPredict, multiLogReg, multiLogRegPredict, na_locf, naivebayes, norm [...]
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/abstain.py
similarity index 61%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/abstain.py
index 80e5b67..59fcd19 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/abstain.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/abstain.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def abstain(X: OperationNode, Y: OperationNode, threshold: float, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y, 'threshold':threshold}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'abstain', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/als.py b/src/main/python/systemds/operator/algorithm/builtin/als.py
new file mode 100644
index 0000000..731f51f
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/als.py
@@ -0,0 +1,51 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/als.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def als(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param X: Location to read the input matrix X to be factorized
+    :param rank: Rank of the factorization
+    :param reg: Regularization: 
+    :param lambda: Regularization parameter, no regularization if 0.0
+    :param maxi: Maximum number of iterations
+    :param check: Check for convergence after every iteration, i.e., updating U and V once
+    :param thr: Assuming check is set to TRUE, the algorithm stops and convergence is declared 
+    :param if: in loss in any two consecutive iterations falls below this threshold; 
+    :param if: FALSE thr is ignored
+    :return: 'OperationNode' containing x n matrix v 
+    """
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'als', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/alsCG.py b/src/main/python/systemds/operator/algorithm/builtin/alsCG.py
new file mode 100644
index 0000000..34e8c8e
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/alsCG.py
@@ -0,0 +1,51 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/alsCG.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def alsCG(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param X: Location to read the input matrix X to be factorized
+    :param rank: Rank of the factorization
+    :param reg: Regularization:
+    :param lambda: Regularization parameter, no regularization if 0.0
+    :param maxi: Maximum number of iterations
+    :param check: Check for convergence after every iteration, i.e., updating U and V once
+    :param thr: Assuming check is set to TRUE, the algorithm stops and convergence is declared
+    :param if: in loss in any two consecutive iterations falls below this threshold;
+    :param if: FALSE thr is ignored
+    :return: 'OperationNode' containing x n matrix v 
+    """
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'alsCG', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/alsDS.py b/src/main/python/systemds/operator/algorithm/builtin/alsDS.py
new file mode 100644
index 0000000..fe67af4
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/alsDS.py
@@ -0,0 +1,52 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/alsDS.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def alsDS(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param V: Location to read the input matrix V to be factorized
+    :param L: Location to write the factor matrix L
+    :param R: Location to write the factor matrix R
+    :param rank: Rank of the factorization
+    :param lambda: Regularization parameter, no regularization if 0.0
+    :param maxi: Maximum number of iterations
+    :param check: Check for convergence after every iteration, i.e., updating L and R once
+    :param thr: Assuming check is set to TRUE, the algorithm stops and convergence is declared
+    :param if: in loss in any two consecutive iterations falls below this threshold;
+    :param if: FALSE thr is ignored
+    :return: 'OperationNode' containing x n matrix r 
+    """
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'alsDS', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/alsPredict.py
similarity index 60%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/alsPredict.py
index 80e5b67..34c116c 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/alsPredict.py
@@ -20,15 +20,23 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/alsPredict.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def alsPredict(userIDs: OperationNode, I: OperationNode, L: OperationNode, R: OperationNode) -> OperationNode:
+    
+    
+    userIDs._check_matrix_op()
+    I._check_matrix_op()
+    L._check_matrix_op()
+    R._check_matrix_op()
+    params_dict = {'userIDs':userIDs, 'I':I, 'L':L, 'R':R}
+    return OperationNode(userIDs.sds_context, 'alsPredict', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/arima.py b/src/main/python/systemds/operator/algorithm/builtin/arima.py
new file mode 100644
index 0000000..f907f23
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/arima.py
@@ -0,0 +1,53 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/arima.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def arima(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param X: The input Matrix to apply Arima on.
+    :param max_func_invoc: ?
+    :param p: non-seasonal AR order
+    :param d: non-seasonal differencing order
+    :param q: non-seasonal MA order
+    :param P: seasonal AR order
+    :param D: seasonal differencing order
+    :param Q: seasonal MA order
+    :param s: period in terms of number of time-steps
+    :param include_mean: center to mean 0, and include in result
+    :param solver: solver, is either "cg" or "jacobi"
+    :return: 'OperationNode' containing the calculated coefficients 
+    """
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'arima', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/bandit.py b/src/main/python/systemds/operator/algorithm/builtin/bandit.py
new file mode 100644
index 0000000..13240d8
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/bandit.py
@@ -0,0 +1,44 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/bandit.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def bandit(X_train: OperationNode, Y_train: OperationNode, X_val: OperationNode, Y_val: OperationNode, mask: OperationNode, schema: Frame[Unknown], lp: Frame[Unknown], primitives: Frame[Unknown], param: Frame[Unknown], isWeighted: bool, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X_train._check_matrix_op()
+    Y_train._check_matrix_op()
+    X_val._check_matrix_op()
+    Y_val._check_matrix_op()
+    mask._check_matrix_op()
+    params_dict = {'X_train':X_train, 'Y_train':Y_train, 'X_val':X_val, 'Y_val':Y_val, 'mask':mask, 'schema':schema, 'lp':lp, 'primitives':primitives, 'param':param, 'isWeighted':isWeighted}
+    params_dict.update(kwargs)
+    return OperationNode(X_train.sds_context, 'bandit', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=3, output_types=[OutputType.FRAME, OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/bivar.py
similarity index 52%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/bivar.py
index 80e5b67..1687f2a 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/bivar.py
@@ -20,15 +20,27 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/bivar.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def bivar(X: OperationNode, S1: OperationNode, S2: OperationNode, T1: OperationNode, T2: OperationNode, verbose: bool) -> OperationNode:
+    """
+    :param verbose: Print bivar stats
+    :return: 'OperationNode' containing  
+    """
+    
+    X._check_matrix_op()
+    S1._check_matrix_op()
+    S2._check_matrix_op()
+    T1._check_matrix_op()
+    T2._check_matrix_op()
+    params_dict = {'X':X, 'S1':S1, 'S2':S2, 'T1':T1, 'T2':T2, 'verbose':verbose}
+    return OperationNode(X.sds_context, 'bivar', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=4, output_types=[OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/components.py
similarity index 64%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/components.py
index 80e5b67..117fd20 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/components.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/components.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def components(G: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    G._check_matrix_op()
+    params_dict = {'G':G}
+    params_dict.update(kwargs)
+    return OperationNode(G.sds_context, 'components', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/confusionMatrix.py
similarity index 52%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/confusionMatrix.py
index 80e5b67..46125ba 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/confusionMatrix.py
@@ -20,15 +20,25 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/confusionMatrix.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def confusionMatrix(P: OperationNode, Y: OperationNode) -> OperationNode:
+    """
+    :param P: vector of Predictions
+    :param Y: vector of Golden standard One Hot Encoded; the one hot encoded vector of actual labels
+    :return: 'OperationNode' containing the confusion matrix sums of classifications & the confusion matrix averages of each true class 
+    """
+    
+    P._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'P':P, 'Y':Y}
+    return OperationNode(P.sds_context, 'confusionMatrix', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/cor.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/cor.py
index 80e5b67..4df9ddb 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/cor.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/cor.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def cor(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'cor', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/cspline.py
similarity index 59%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/cspline.py
index 80e5b67..6ae61ff 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/cspline.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/cspline.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def cspline(X: OperationNode, Y: OperationNode, inp_x: float, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y, 'inp_x':inp_x}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'cspline', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/csplineDS.py
similarity index 61%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/csplineDS.py
index 80e5b67..1ad7377 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/csplineDS.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/csplineDS.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def csplineDS(X: OperationNode, Y: OperationNode, inp_x: float) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y, 'inp_x':inp_x}
+    return OperationNode(X.sds_context, 'csplineDS', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/cvlm.py
similarity index 60%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/cvlm.py
index 80e5b67..6b3724b 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/cvlm.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/cvlm.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def cvlm(X: OperationNode, y: OperationNode, k: int, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    y._check_matrix_op()
+    params_dict = {'X':X, 'y':y, 'k':k}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'cvlm', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/dbscan.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/dbscan.py
index 80e5b67..1c73d4e 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/dbscan.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/dbscan.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def dbscan(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'dbscan', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/decisionTree.py b/src/main/python/systemds/operator/algorithm/builtin/decisionTree.py
new file mode 100644
index 0000000..601b848
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/decisionTree.py
@@ -0,0 +1,49 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/decisionTree.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def decisionTree(X: OperationNode, Y: OperationNode, R: OperationNode, verbose: bool, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param a: vector, other positive Integers indicate the number of categories
+    :param If: not provided by default all variables are assumed to be scale
+    :param bins: Number of equiheight bins per scale feature to choose thresholds
+    :param depth: Maximum depth of the learned tree
+    :param verbose: boolean specifying if the algorithm should print information while executing
+    :return: 'OperationNode' containing looks at if j is an internal node, otherwise 0 & 6,7,... if j is categorical & a leaf node: number of misclassified samples reaching at node j & feature chosen for j is categorical rows 6,7,... depict the value subset chosen for j & a leaf node 1 if j is impure and the number of samples at j > threshold, otherwise 0 
+    """
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    R._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y, 'R':R, 'verbose':verbose}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'decisionTree', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/discoverFD.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/discoverFD.py
index 80e5b67..a6574f2 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/discoverFD.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/discoverFD.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def discoverFD(X: OperationNode, Mask: OperationNode, threshold: float) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Mask._check_matrix_op()
+    params_dict = {'X':X, 'Mask':Mask, 'threshold':threshold}
+    return OperationNode(X.sds_context, 'discoverFD', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/dist.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/dist.py
index 80e5b67..ca69fc1 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/dist.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/dist.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def dist(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'dist', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/getAccuracy.py
similarity index 62%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/getAccuracy.py
index 80e5b67..787c439 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/getAccuracy.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/getAccuracy.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def getAccuracy(y: OperationNode, yhat: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    y._check_matrix_op()
+    yhat._check_matrix_op()
+    params_dict = {'y':y, 'yhat':yhat}
+    params_dict.update(kwargs)
+    return OperationNode(y.sds_context, 'getAccuracy', named_input_nodes=params_dict, output_type=OutputType.DOUBLE)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/glm.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/glm.py
index 80e5b67..cf9ad73 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/glm.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/glm.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def glm(X: OperationNode, Y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'glm', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/gmm.py
similarity index 57%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/gmm.py
index 80e5b67..69763ea 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/gmm.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/gmm.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def gmm(X: OperationNode, verbose: bool, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'verbose':verbose}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'gmm', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=7, output_types=[OutputType.MATRIX, OutputType.MATRIX, OutputType.INTEGER, OutputType.DOUBLE, OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/gmmPredict.py b/src/main/python/systemds/operator/algorithm/builtin/gmmPredict.py
new file mode 100644
index 0000000..5bdf57d
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/gmmPredict.py
@@ -0,0 +1,49 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/gmmPredict.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def gmmPredict(X: OperationNode, weight: OperationNode, mu: OperationNode, precisions_cholesky: OperationNode, model: String) -> OperationNode:
+    """
+    :param X: Matrix X (instances to be clustered)
+    :param weight: Weight of learned model
+    :param mu: fitted clusters mean
+    :param precisions_cholesky: fitted precision matrix for each mixture
+    :param model: fitted model
+    :return: 'OperationNode' containing predicted cluster labels & probabilities of belongingness & for new instances given the variance and mean of fitted data 
+    """
+    
+    X._check_matrix_op()
+    weight._check_matrix_op()
+    mu._check_matrix_op()
+    precisions_cholesky._check_matrix_op()
+    params_dict = {'X':X, 'weight':weight, 'mu':mu, 'precisions_cholesky':precisions_cholesky, 'model':model}
+    return OperationNode(X.sds_context, 'gmmPredict', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/gnmf.py
similarity index 61%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/gnmf.py
index 80e5b67..1c9163f 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/gnmf.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/gnmf.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def gnmf(X: OperationNode, rnk: int, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'rnk':rnk}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'gnmf', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/gridSearch.py
similarity index 54%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/gridSearch.py
index 80e5b67..ea6ec64 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/gridSearch.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/gridSearch.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def gridSearch(X: OperationNode, y: OperationNode, train: String, predict: String, params: List[String], paramValues: List[Unknown], **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    y._check_matrix_op()
+    params_dict = {'X':X, 'y':y, 'train':train, 'predict':predict, 'params':params, 'paramValues':paramValues}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'gridSearch', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.FRAME])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/hyperband.py
similarity index 50%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/hyperband.py
index 80e5b67..290756a 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/hyperband.py
@@ -20,15 +20,25 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/hyperband.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def hyperband(X_train: OperationNode, y_train: OperationNode, X_val: OperationNode, y_val: OperationNode, params: List[String], paramRanges: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X_train._check_matrix_op()
+    y_train._check_matrix_op()
+    X_val._check_matrix_op()
+    y_val._check_matrix_op()
+    paramRanges._check_matrix_op()
+    params_dict = {'X_train':X_train, 'y_train':y_train, 'X_val':X_val, 'y_val':y_val, 'params':params, 'paramRanges':paramRanges}
+    params_dict.update(kwargs)
+    return OperationNode(X_train.sds_context, 'hyperband', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.FRAME])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/img_brightness.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/img_brightness.py
index 80e5b67..f23d7c6 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/img_brightness.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/img_brightness.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def img_brightness(img_in: OperationNode, value: float, channel_max: int) -> OperationNode:
+    
+    
+    img_in._check_matrix_op()
+    params_dict = {'img_in':img_in, 'value':value, 'channel_max':channel_max}
+    return OperationNode(img_in.sds_context, 'img_brightness', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/img_crop.py
similarity index 62%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/img_crop.py
index 80e5b67..434ba2b 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/img_crop.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/img_crop.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def img_crop(img_in: OperationNode, w: int, h: int, x_offset: int, y_offset: int) -> OperationNode:
+    
+    
+    img_in._check_matrix_op()
+    params_dict = {'img_in':img_in, 'w':w, 'h':h, 'x_offset':x_offset, 'y_offset':y_offset}
+    return OperationNode(img_in.sds_context, 'img_crop', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/img_mirror.py
similarity index 64%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/img_mirror.py
index 80e5b67..9e179be 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/img_mirror.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/img_mirror.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def img_mirror(img_in: OperationNode, horizontal_axis: bool) -> OperationNode:
+    
+    
+    img_in._check_matrix_op()
+    params_dict = {'img_in':img_in, 'horizontal_axis':horizontal_axis}
+    return OperationNode(img_in.sds_context, 'img_mirror', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/imputeByFD.py
similarity index 58%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/imputeByFD.py
index 80e5b67..c342db6 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/imputeByFD.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/imputeByFD.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def imputeByFD(X: OperationNode, sourceAttribute: int, targetAttribute: int, threshold: float, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'sourceAttribute':sourceAttribute, 'targetAttribute':targetAttribute, 'threshold':threshold}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'imputeByFD', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/imputeByMean.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/imputeByMean.py
index 80e5b67..96dc04a 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/imputeByMean.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/imputeByMean.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def imputeByMean(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'imputeByMean', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/imputeByMedian.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/imputeByMedian.py
index 80e5b67..4559418 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/imputeByMedian.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/imputeByMedian.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def imputeByMedian(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'imputeByMedian', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/intersect.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/intersect.py
index 80e5b67..a3a8294 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/intersect.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/intersect.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def intersect(X: OperationNode, Y: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y}
+    return OperationNode(X.sds_context, 'intersect', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/knnbf.py
similarity index 64%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/knnbf.py
index 80e5b67..4f339d0 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/knnbf.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/knnbf.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def knnbf(X: OperationNode, T: OperationNode, k_value: int) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    T._check_matrix_op()
+    params_dict = {'X':X, 'T':T, 'k_value':k_value}
+    return OperationNode(X.sds_context, 'knnbf', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/lasso.py
similarity index 52%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/lasso.py
index 80e5b67..1f746d2 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/lasso.py
@@ -20,15 +20,30 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/lasso.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def lasso(X: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param X: input feature matrix
+    :param y: matrix Y columns of the design matrix
+    :param tol: target convergence tolerance
+    :param M: history length
+    :param tau: regularization component
+    :param maxi: maximum number of iterations until convergence
+    :return: 'OperationNode' containing  
+    """
+    
+    X._check_matrix_op()
+    y._check_matrix_op()
+    params_dict = {'X':X, 'y':y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'lasso', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/lmCG.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/lmCG.py
index 80e5b67..a6c8d45 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/lmCG.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/lmCG.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def lmCG(X: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    y._check_matrix_op()
+    params_dict = {'X':X, 'y':y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'lmCG', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/lmDS.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/lmDS.py
index 80e5b67..3ee4791 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/lmDS.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/lmDS.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def lmDS(X: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    y._check_matrix_op()
+    params_dict = {'X':X, 'y':y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'lmDS', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/logSumExp.py
similarity index 64%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/logSumExp.py
index 80e5b67..0b9ee77 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/logSumExp.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/logSumExp.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def logSumExp(M: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    M._check_matrix_op()
+    params_dict = {'M':M}
+    params_dict.update(kwargs)
+    return OperationNode(M.sds_context, 'logSumExp', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/msvm.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/msvm.py
index 80e5b67..83ece4f 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/msvm.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/msvm.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def msvm(X: OperationNode, Y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'msvm', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/msvmPredict.py
similarity index 55%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/msvmPredict.py
index 80e5b67..db7a48a 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/msvmPredict.py
@@ -20,15 +20,25 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/msvmPredict.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def msvmPredict(X: OperationNode, W: OperationNode) -> OperationNode:
+    """
+    :param X: matrix X of feature vectors to classify
+    :param W: matrix of the trained variables
+    :return: 'OperationNode' containing classification labels maxed to ones and zeros. 
+    """
+    
+    X._check_matrix_op()
+    W._check_matrix_op()
+    params_dict = {'X':X, 'W':W}
+    return OperationNode(X.sds_context, 'msvmPredict', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/na_locf.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/na_locf.py
index 80e5b67..d2305da 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/na_locf.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/na_locf.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def na_locf(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'na_locf', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/naivebayes.py
similarity index 60%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/naivebayes.py
index 80e5b67..1929431 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/naivebayes.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/naivebayes.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def naivebayes(D: OperationNode, C: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    D._check_matrix_op()
+    C._check_matrix_op()
+    params_dict = {'D':D, 'C':C}
+    params_dict.update(kwargs)
+    return OperationNode(D.sds_context, 'naivebayes', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/normalize.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/normalize.py
index 80e5b67..3e7d50f 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/normalize.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/normalize.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def normalize(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'normalize', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/outlier.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/outlier.py
index 80e5b67..4f82c86 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/outlier.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/outlier.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def outlier(X: OperationNode, opposite: bool) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'opposite':opposite}
+    return OperationNode(X.sds_context, 'outlier', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/outlierByArima.py
similarity index 64%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/outlierByArima.py
index 80e5b67..92fe568 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/outlierByArima.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/outlierByArima.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def outlierByArima(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'outlierByArima', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/outlierByIQR.py
similarity index 61%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/outlierByIQR.py
index 80e5b67..f33e0e8 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/outlierByIQR.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/outlierByIQR.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def outlierByIQR(X: OperationNode, k: float, max_iterations: int, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'k':k, 'max_iterations':max_iterations}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'outlierByIQR', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/outlierBySd.py
similarity index 62%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/outlierBySd.py
index 80e5b67..2bef4e8 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/outlierBySd.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/outlierBySd.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def outlierBySd(X: OperationNode, max_iterations: int, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'max_iterations':max_iterations}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'outlierBySd', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/pnmf.py
similarity index 61%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/pnmf.py
index 80e5b67..1b26a27 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/pnmf.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/pnmf.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def pnmf(X: OperationNode, rnk: int, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'rnk':rnk}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'pnmf', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/builtin/ppca.py b/src/main/python/systemds/operator/algorithm/builtin/ppca.py
new file mode 100644
index 0000000..87a84cf
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/ppca.py
@@ -0,0 +1,48 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/ppca.dml
+
+from typing import Dict
+
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def ppca(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    """
+    :param X: n x m input feature matrix
+    :param k: indicates dimension of the new vector space constructed from eigen vectors
+    :param maxi: maximum number of iterations until convergence
+    :param tolobj: objective function tolerance value to stop ppca algorithm
+    :param tolrecerr: reconstruction error tolerance value to stop the algorithm
+    :param verbose: verbose debug output
+    :return: 'OperationNode' containing output feature matrix with k columns & output dominant eigen vectors (can be used for projections) 
+    """
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'ppca', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/scale.py
similarity index 62%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/scale.py
index 80e5b67..f1e0818 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/scale.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/scale.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def scale(X: OperationNode, center: bool, scale: bool) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'center':center, 'scale':scale}
+    return OperationNode(X.sds_context, 'scale', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=3, output_types=[OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/scaleApply.py
similarity index 60%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/scaleApply.py
index 80e5b67..4d9a19e 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/scaleApply.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/scaleApply.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def scaleApply(X: OperationNode, Centering: OperationNode, ScaleFactor: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Centering._check_matrix_op()
+    ScaleFactor._check_matrix_op()
+    params_dict = {'X':X, 'Centering':Centering, 'ScaleFactor':ScaleFactor}
+    return OperationNode(X.sds_context, 'scaleApply', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/sigmoid.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/sigmoid.py
index 80e5b67..01e6b8e 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/sigmoid.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/sigmoid.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def sigmoid(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'sigmoid', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/slicefinder.py
similarity index 59%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/slicefinder.py
index 80e5b67..2c4f26e 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/slicefinder.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/slicefinder.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def slicefinder(X: OperationNode, e: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    e._check_matrix_op()
+    params_dict = {'X':X, 'e':e}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'slicefinder', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=3, output_types=[OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/smote.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/smote.py
index 80e5b67..c67e683 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/smote.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/smote.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def smote(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'smote', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/split.py
similarity index 59%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/split.py
index 80e5b67..19fc4e7 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/split.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/split.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def split(X: OperationNode, Y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    Y._check_matrix_op()
+    params_dict = {'X':X, 'Y':Y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'split', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=4, output_types=[OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/statsNA.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/statsNA.py
index 80e5b67..1fe4579 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/statsNA.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/statsNA.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def statsNA(X: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'statsNA', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/steplm.py
similarity index 60%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/steplm.py
index 80e5b67..ed11c00 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/steplm.py
@@ -20,15 +20,22 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/steplm.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def steplm(X: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    y._check_matrix_op()
+    params_dict = {'X':X, 'y':y}
+    params_dict.update(kwargs)
+    return OperationNode(X.sds_context, 'steplm', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/univar.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/univar.py
index 80e5b67..a9a6545 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/univar.py
@@ -20,15 +20,21 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/univar.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def univar(X: OperationNode, types: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    types._check_matrix_op()
+    params_dict = {'X':X, 'types':types}
+    return OperationNode(X.sds_context, 'univar', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/vectorToCsv.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/vectorToCsv.py
index 80e5b67..b148e9c 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/vectorToCsv.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/vectorToCsv.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def vectorToCsv(vector: OperationNode) -> OperationNode:
+    
+    
+    vector._check_matrix_op()
+    params_dict = {'vector':vector}
+    return OperationNode(vector.sds_context, 'vectorToCsv', named_input_nodes=params_dict, output_type=OutputType.STRING)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/winsorize.py
index 80e5b67..fdeb287 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/winsorize.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def winsorize(X: OperationNode, verbose: bool) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X, 'verbose':verbose}
+    return OperationNode(X.sds_context, 'winsorize', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/xdummy1.py
similarity index 66%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/xdummy1.py
index 80e5b67..a8799b8 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/xdummy1.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/xdummy1.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def xdummy1(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'xdummy1', named_input_nodes=params_dict, output_type=OutputType.MATRIX)
+
+
+    
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/builtin/xdummy2.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/__init__.py
copy to src/main/python/systemds/operator/algorithm/builtin/xdummy2.py
index 80e5b67..9c77cb4 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/xdummy2.py
@@ -20,15 +20,20 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/xdummy2.dml
 
-from .builtin.l2svm import l2svm 
-from .builtin.multiLogRegPredict import multiLogRegPredict 
-from .builtin.multiLogReg import multiLogReg 
-from .builtin.lm import lm 
-from .builtin.kmeans import kmeans 
-from .builtin.toOneHot import toOneHot 
-from .builtin.pca import pca 
-from .builtin.kmeansPredict import kmeansPredict 
-from .builtin.alsTopkPredict import alsTopkPredict 
+from typing import Dict
 
-__all__ = [l2svm, multiLogRegPredict, multiLogReg, lm, kmeans, toOneHot, pca, kmeansPredict, alsTopkPredict] 
+from systemds.operator import OperationNode
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+def xdummy2(X: OperationNode) -> OperationNode:
+    
+    
+    X._check_matrix_op()
+    params_dict = {'X':X}
+    return OperationNode(X.sds_context, 'xdummy2', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2, output_types=[OutputType.MATRIX, OutputType.MATRIX])
+
+
+    
\ No newline at end of file