.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery_examples\kernel_overloading.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_examples_kernel_overloading.py: Kernel Overloading Example ========================== This example demonstrates kernel overloading using CodPy. .. GENERATED FROM PYTHON SOURCE LINES 7-29 .. code-block:: Python # import libraries import numpy as np from codpydll import * import codpy.core as core # define the class class my_kernel(core.cd.kernel): # An example of overloading codpy kernel with a user-defined expression. def __init__(self, bandwith = 1.,**kwargs): core.cd.kernel.__init__(self) self.bandwidth_ = bandwith def k(self, x, y): out = np.linalg.norm((x - y) * self.bandwidth_) return out * out * 0.5 def grad(self, x, y): return y * self.bandwidth_ .. GENERATED FROM PYTHON SOURCE LINES 30-31 Generate data for the kernel. .. GENERATED FROM PYTHON SOURCE LINES 33-36 .. code-block:: Python core.kernel_interface.set_verbose(True) x, y = np.random.randn(3, 2), np.random.randn(3, 2) .. GENERATED FROM PYTHON SOURCE LINES 37-38 Create a kernel object and display the result. .. GENERATED FROM PYTHON SOURCE LINES 40-45 .. code-block:: Python my_kernel1 = my_kernel(1) my_kernel2 = my_kernel(2) result_1 = my_kernel1.k(x[0], y[0]) print("Result 1:", result_1) .. rst-class:: sphx-glr-script-out .. code-block:: none Result 1: 1.061301935547621 .. GENERATED FROM PYTHON SOURCE LINES 46-48 Set the kernel and display the next result. my_kernel2 and my_kernel_ptr2 are the same object. .. GENERATED FROM PYTHON SOURCE LINES 50-55 .. code-block:: Python my_kernel.set_kernel_ptr(my_kernel2) my_kernel_ptr2 = core.kernel_interface.get_kernel_ptr() result_2 = my_kernel_ptr2.k(x[0], y[0]) print("Result 2:", result_2) .. rst-class:: sphx-glr-script-out .. code-block:: none Result 2: 4.245207742190484 .. GENERATED FROM PYTHON SOURCE LINES 56-57 Compute the Gram matrix with my_kernel2 and display it. .. GENERATED FROM PYTHON SOURCE LINES 59-62 .. code-block:: Python gram_matrix = core.op.Knm(x, y) print("Gram Matrix:", gram_matrix) .. rst-class:: sphx-glr-script-out .. code-block:: none Gram Matrix: [[ 4.24520774 12.6903989 0.26575161] [ 1.55932528 18.17264219 6.9421239 ] [ 5.10843915 16.41678959 11.85845957]] .. GENERATED FROM PYTHON SOURCE LINES 63-64 You can switch kernel as follow. .. GENERATED FROM PYTHON SOURCE LINES 64-68 .. code-block:: Python my_kernel.set_kernel_ptr(my_kernel1) print(core.op.Knm(x, y)) pass .. rst-class:: sphx-glr-script-out .. code-block:: none [[1.06130194 3.17259972 0.0664379 ] [0.38983132 4.54316055 1.73553097] [1.27710979 4.1041974 2.96461489]] .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.636 seconds) .. _sphx_glr_download_gallery_examples_kernel_overloading.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: kernel_overloading.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: kernel_overloading.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: kernel_overloading.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_