{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How to use SVSA to learn and predict lineshapes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we import the package as well as numpy" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import svsa\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to train the SVSA model we need to have some training data. We'll use the built-in Tenti S6 model to generate RB scattering lineshapes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_lineshapes, train_params, xs = svsa.gen_spectra(y_seq=np.linspace(0,2,num=5),\n", " ri_seq=np.linspace(1.5,3,num=2),\n", " ef_seq=np.linspace(1.8,2,num=5),\n", " ci_seq=np.array([1]),\n", " ct_seq=np.array([1.5]),\n", " x_seq=np.linspace(-3,3,num=100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "this generates an array of training lineshapes for the given (50) parameters over the (100) values of x" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(50, 5)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yrlx_inteukenfc_intc_tr
00.01.51.801.01.5
10.01.51.851.01.5
20.01.51.901.01.5
30.01.51.951.01.5
40.01.52.001.01.5
\n", "
" ], "text/plain": [ " y rlx_int eukenf c_int c_tr\n", "0 0.0 1.5 1.80 1.0 1.5\n", "1 0.0 1.5 1.85 1.0 1.5\n", "2 0.0 1.5 1.90 1.0 1.5\n", "3 0.0 1.5 1.95 1.0 1.5\n", "4 0.0 1.5 2.00 1.0 1.5" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(train_params.shape)\n", "train_params[0:5] # first five training parameters" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(100,)\n" ] }, { "data": { "text/plain": [ "array([-3. , -2.93939394, -2.87878788, -2.81818182, -2.75757576])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(xs.shape)\n", "xs[0:5] # first five x values used to train" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(50, 100)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...90919293949596979899
00.0004370.0006270.0008920.001260.0017670.0024590.0033970.0046590.0063430.008572...0.0085720.0063430.0046590.0033970.0024590.0017670.001260.0008920.0006270.000437
10.0004370.0006270.0008920.001260.0017670.0024590.0033970.0046590.0063430.008572...0.0085720.0063430.0046590.0033970.0024590.0017670.001260.0008920.0006270.000437
20.0004370.0006270.0008920.001260.0017670.0024590.0033970.0046590.0063430.008572...0.0085720.0063430.0046590.0033970.0024590.0017670.001260.0008920.0006270.000437
30.0004370.0006270.0008920.001260.0017670.0024590.0033970.0046590.0063430.008572...0.0085720.0063430.0046590.0033970.0024590.0017670.001260.0008920.0006270.000437
40.0004370.0006270.0008920.001260.0017670.0024590.0033970.0046590.0063430.008572...0.0085720.0063430.0046590.0033970.0024590.0017670.001260.0008920.0006270.000437
\n", "

5 rows × 100 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 0.000437 0.000627 0.000892 0.00126 0.001767 0.002459 0.003397 \n", "1 0.000437 0.000627 0.000892 0.00126 0.001767 0.002459 0.003397 \n", "2 0.000437 0.000627 0.000892 0.00126 0.001767 0.002459 0.003397 \n", "3 0.000437 0.000627 0.000892 0.00126 0.001767 0.002459 0.003397 \n", "4 0.000437 0.000627 0.000892 0.00126 0.001767 0.002459 0.003397 \n", "\n", " 7 8 9 ... 90 91 92 93 \\\n", "0 0.004659 0.006343 0.008572 ... 0.008572 0.006343 0.004659 0.003397 \n", "1 0.004659 0.006343 0.008572 ... 0.008572 0.006343 0.004659 0.003397 \n", "2 0.004659 0.006343 0.008572 ... 0.008572 0.006343 0.004659 0.003397 \n", "3 0.004659 0.006343 0.008572 ... 0.008572 0.006343 0.004659 0.003397 \n", "4 0.004659 0.006343 0.008572 ... 0.008572 0.006343 0.004659 0.003397 \n", "\n", " 94 95 96 97 98 99 \n", "0 0.002459 0.001767 0.00126 0.000892 0.000627 0.000437 \n", "1 0.002459 0.001767 0.00126 0.000892 0.000627 0.000437 \n", "2 0.002459 0.001767 0.00126 0.000892 0.000627 0.000437 \n", "3 0.002459 0.001767 0.00126 0.000892 0.000627 0.000437 \n", "4 0.002459 0.001767 0.00126 0.000892 0.000627 0.000437 \n", "\n", "[5 rows x 100 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(train_lineshapes.shape)\n", "train_lineshapes[0:5] # first five lineshapes " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then train SVSA by passing these into the method and calling the fit function (with appropriate choices of nu and K)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "svs = svsa.SupportVectorSpectrum(train_params=train_params,train_lineshapes=train_lineshapes,train_x=xs)\n", "svs.fit(nu=1E-1,K=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then predict a new line using the predict function passing in the values for the parameters at which we would like to predict the line" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "test_params = np.array([[.8,2,1.9,1,1.5]]).T\n", "pred = svs.predict(test_params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we can then plot and compare it to Tenti's S6 model" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nV0oph/j/Kwirs6g4pmAAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "tenti_line = svsa.crbs6(y=test_params[0],\n", " rlx_int=test_params[1],\n", " eukenf=test_params[2],\n", " c_int=test_params[3],\n", " c_tr=test_params[4],\n", " xi=np.linspace(-3,3,num=100))['sptsig']\n", "plt.plot(tenti_line,color='red')\n", "plt.plot(pred,color='blue')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we can also save the output from the fit coefficients as either a .mat file for MATLAB or as a collection of .csv files for other uses (like R)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "svs.save_fit(fname=\"test_fit\",type=\"mat\") # for use in matlab\n", "svs.save_fit(\"test_fit\",type='csv') # for use in other languages, e.g. R" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }