
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_examples/plot_io.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_auto_examples_plot_io.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_examples_plot_io.py:


Saving and loading splines
--------------------------

.. GENERATED FROM PYTHON SOURCE LINES 5-12

.. code-block:: Python


    import sys

    import numpy as np
    import splinebox.basis_functions
    import splinebox.spline_curves








.. GENERATED FROM PYTHON SOURCE LINES 13-14

We start by creating a random spline.

.. GENERATED FROM PYTHON SOURCE LINES 14-19

.. code-block:: Python


    spline = splinebox.spline_curves.Spline(
        M=5, basis_function=splinebox.basis_functions.B3(), closed=True, control_points=np.random.rand(5, 3)
    )








.. GENERATED FROM PYTHON SOURCE LINES 20-21

Let's save the spline:

.. GENERATED FROM PYTHON SOURCE LINES 21-24

.. code-block:: Python


    spline.to_json("spline.json")








.. GENERATED FROM PYTHON SOURCE LINES 25-26

Here is what the json file looks like:

.. GENERATED FROM PYTHON SOURCE LINES 26-30

.. code-block:: Python


    with open("spline.json") as f:
        sys.stdout.write(f.read())





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    {
      "version": 1,
      "M": 5,
      "basis_function": "B3",
      "closed": true,
      "control_points": [
        [
          0.022659996281927608,
          0.5672911769117026,
          0.22177962312871247
        ],
        [
          0.43475150600307066,
          0.3838674893182086,
          0.6666599669935431
        ],
        [
          0.5208172060859426,
          0.2964702563910885,
          0.017541610114136685
        ],
        [
          0.5102874235243413,
          0.8405273469579504,
          0.7637445683104783
        ],
        [
          0.16001758232290375,
          0.9863014920953063,
          0.7229409773466798
        ]
      ]
    }



.. GENERATED FROM PYTHON SOURCE LINES 31-32

Next, we will create a new spline based on the json file.

.. GENERATED FROM PYTHON SOURCE LINES 32-35

.. code-block:: Python


    loaded_spline = splinebox.spline_curves.Spline.from_json("spline.json")








.. GENERATED FROM PYTHON SOURCE LINES 36-37

You can also save multiple splines in a single json file.

.. GENERATED FROM PYTHON SOURCE LINES 37-47

.. code-block:: Python


    splines = []
    for _ in range(3):
        spline = splinebox.spline_curves.Spline(
            M=4, basis_function=splinebox.basis_functions.B3(), closed=True, control_points=np.random.rand(4, 1)
        )
        splines.append(spline)

    splinebox.spline_curves.splines_to_json("splines.json", splines)








.. GENERATED FROM PYTHON SOURCE LINES 48-49

Here is what a json file with multiple splines looks like:

.. GENERATED FROM PYTHON SOURCE LINES 49-53

.. code-block:: Python


    with open("splines.json") as f:
        sys.stdout.write(f.read())





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    [
      {
        "version": 1,
        "M": 4,
        "basis_function": "B3",
        "closed": true,
        "control_points": [
          [
            0.9124248657139222
          ],
          [
            0.09988754786822207
          ],
          [
            0.3895280583372148
          ],
          [
            0.8400278558827745
          ]
        ]
      },
      {
        "version": 1,
        "M": 4,
        "basis_function": "B3",
        "closed": true,
        "control_points": [
          [
            0.4531338505645528
          ],
          [
            0.18441198511362278
          ],
          [
            0.721376034881579
          ],
          [
            0.20851987486619883
          ]
        ]
      },
      {
        "version": 1,
        "M": 4,
        "basis_function": "B3",
        "closed": true,
        "control_points": [
          [
            0.47611568426180884
          ],
          [
            0.9302773244955215
          ],
          [
            0.6849124729992135
          ],
          [
            0.14325459502990578
          ]
        ]
      }
    ]



.. GENERATED FROM PYTHON SOURCE LINES 54-55

Lastly, we load multiple splines from a single json file.

.. GENERATED FROM PYTHON SOURCE LINES 55-58

.. code-block:: Python


    splines = splinebox.spline_curves.splines_from_json("splines.json")
    print(splines)




.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    [splinebox.spline_curves.Spline(M=4, basis_function=splinebox.basis_functions.B3(), closed=True, control_points=np.array([[0.91242487],
           [0.09988755],
           [0.38952806],
           [0.84002786]])), splinebox.spline_curves.Spline(M=4, basis_function=splinebox.basis_functions.B3(), closed=True, control_points=np.array([[0.45313385],
           [0.18441199],
           [0.72137603],
           [0.20851987]])), splinebox.spline_curves.Spline(M=4, basis_function=splinebox.basis_functions.B3(), closed=True, control_points=np.array([[0.47611568],
           [0.93027732],
           [0.68491247],
           [0.1432546 ]]))]





.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 0.005 seconds)


.. _sphx_glr_download_auto_examples_plot_io.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_io.ipynb <plot_io.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_io.py <plot_io.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: plot_io.zip <plot_io.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
