diff --git "a/1_to_1_multi_layer_roc_auc - Copy \0502\051.ipynb" "b/1_to_1_multi_layer_roc_auc - Copy \0502\051.ipynb"
new file mode 100644
index 0000000..71fe718
--- /dev/null
+++ "b/1_to_1_multi_layer_roc_auc - Copy \0502\051.ipynb"
@@ -0,0 +1,2909 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Import all packages\n",
+ "***"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
+ " from ._conv import register_converters as _register_converters\n",
+ "Using TensorFlow backend.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib as mpl\n",
+ "import random\n",
+ "import math\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import tensorflow as tf\n",
+ "from tensorflow.python.framework import ops\n",
+ "from sklearn import preprocessing\n",
+ "import pickle as pkl\n",
+ "from pathlib import Path\n",
+ "from keras.datasets import imdb\n",
+ "from keras.models import Sequential\n",
+ "from keras.layers import Dense\n",
+ "from keras.layers import LSTM\n",
+ "from keras.layers import GRU\n",
+ "from keras.layers import Dropout, BatchNormalization\n",
+ "from keras.layers import ConvLSTM2D\n",
+ "from keras.layers import Conv1D\n",
+ "#from keras.layers.convolutional import Conv1D\n",
+ "#from keras.layers.convolutional import MaxPooling1D\n",
+ "from keras.layers.embeddings import Embedding\n",
+ "from keras.preprocessing import sequence\n",
+ "from keras.callbacks import History\n",
+ "from keras.callbacks import EarlyStopping\n",
+ "from keras.callbacks import ModelCheckpoint\n",
+ "from keras.callbacks import TensorBoard\n",
+ "from keras.models import load_model\n",
+ "import keras.backend as K\n",
+ "from keras.losses import mean_squared_error\n",
+ "\n",
+ "import xgboost as xgb\n",
+ "from xgboost import XGBClassifier\n",
+ "from xgboost import plot_tree\n",
+ "from sklearn.metrics import accuracy_score\n",
+ "import graphviz\n",
+ "\n",
+ "import sklearn as skl\n",
+ "\n",
+ "#import seaborn as sns"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Preprocessing of the matched 8-hit tracks\n",
+ "\n",
+ "***\n",
+ "\n",
+ "## Import the dataset of the matched 8-hit tracks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#import data as array\n",
+ "# 8 hits with x,y,z\n",
+ "\n",
+ "testset = pd.read_pickle('matched_8hittracks.pkl')\n",
+ "#print(testset)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Convert the data to an array (float32)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Convert the data\n",
+ "\n",
+ "tset = np.array(testset)\n",
+ "tset = tset.astype('float32')\n",
+ "\n",
+ "#Check testset with arbitrary particle\n",
+ "\n",
+ "#print(tset.shape)\n",
+ "#for i in range(8):\n",
+ " #print(tset[1,3*i:(3*i+3)])\n",
+ "#print(tset[0,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Transformation between original 2D-array into 3D-array\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### reshapor()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Transforms 2D-array into 3D array\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- arr_orig: Original 2D array\n",
+ "- num_inputs: Number of inputs per timestep (default value = 3 for X,Y,Z coordinates)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particlenumber, timesteps, input = coordinates)\n",
+ "\n",
+ "\n",
+ "***\n",
+ "\n",
+ "\n",
+ "### reshapor_inv()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Inverse transformation from 3D-array into 2D-array\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- array_shaped: 3D-array of shape(particlenumber, timesteps, input = coordinates)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: 2D-array of shape(particlenumber, inputs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Reshapes the 2D-array to a 3D-array\n",
+ "\n",
+ "def reshapor(arr_orig, num_inputs=3):\n",
+ " timesteps = int(arr_orig.shape[1]/num_inputs)\n",
+ " number_examples = int(arr_orig.shape[0])\n",
+ " arr = np.zeros((number_examples, timesteps, num_inputs))\n",
+ " \n",
+ " for i in range(number_examples):\n",
+ " for t in range(timesteps):\n",
+ " arr[i,t,:] = arr_orig[i,num_inputs*t:num_inputs*t+num_inputs]\n",
+ " \n",
+ " return arr\n",
+ "\n",
+ "#The inverse transformation of the reshapor function (3D to 2D)\n",
+ "\n",
+ "def reshapor_inv(array_shaped):\n",
+ " num_inputs = array_shaped.shape[2]\n",
+ " timesteps = int(array_shaped.shape[1])\n",
+ " num_examples = int(array_shaped.shape[0])\n",
+ " arr = np.zeros((num_examples, timesteps*num_inputs))\n",
+ " \n",
+ " for i in range(num_examples):\n",
+ " for t in range(timesteps):\n",
+ " arr[i,num_inputs*t:num_inputs*t+num_inputs] = array_shaped[i,t,:]\n",
+ " \n",
+ " return arr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Create random training and test sets from the data\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### create_random_sets()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Splits an dataset into a train and a test set\n",
+ "\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- dataset: The actual dataset with shape (particles, other dimensions)\n",
+ "- train_to_total_ratio: The ratio that the training-set should be out of the original set.\n",
+ " The remaining part will become the test-set\n",
+ " \n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- train_set: The newly created training set (particles, other dimensions)\n",
+ "- test_set: The newly created test set (particles, other dimensions)\n",
+ " \n",
+ " \n",
+ "**Additional comments:**\n",
+ "\n",
+ "The data will be randomly shuffled before it gets split up"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### create the training set and the test set###\n",
+ "\n",
+ "def create_random_sets(dataset, train_to_total_ratio):\n",
+ " #shuffle the dataset\n",
+ " num_examples = dataset.shape[0]\n",
+ " p = np.random.permutation(num_examples)\n",
+ " dataset = dataset[p,:]\n",
+ " \n",
+ " #evaluate size of training and test set and initialize them\n",
+ " train_set_size = np.int(num_examples*train_to_total_ratio)\n",
+ " test_set_size = num_examples - train_set_size\n",
+ " \n",
+ " train_set = np.zeros((train_set_size, dataset.shape[1]))\n",
+ " test_set = np.zeros((test_set_size, dataset.shape[1]))\n",
+ " \n",
+ "\n",
+ " #fill train and test sets\n",
+ " for i in range(num_examples):\n",
+ " if train_set_size > i:\n",
+ " train_set[i,:] += dataset[i,:]\n",
+ " else:\n",
+ " test_set[i - train_set_size,:] += dataset[i,:]\n",
+ " \n",
+ " return train_set, test_set\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Create the training and test-sets\n",
+ "\n",
+ "train_set, test_set = create_random_sets(tset, 0.9)\n",
+ "\n",
+ "#print(test_set.shape, train_set.shape, reshapor(tset).shape)\n",
+ "#print(test_set[0,:,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Normalization of the data\n",
+ "\n",
+ "***\n",
+ "\n",
+ "## Normalization based on min_max_scaler from sklearn\n",
+ "\n",
+ "### correct_array_steps()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "As the scaler will be fixed on arrays of specific length this function returns an array padded with zeros with the correct shape\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- steps: Required number of timesteps for the scaler (default value = 8)\n",
+ "- num_inputs: Number of inputs per timestep (default value = 3 for X,Y,Z coordinates)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: 3D array of shape(particle_number, steps, num_inputs)\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### set_min_max_scaler()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Sets the min_max_scaler based on the dataset given (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 2D of shape(particle_number, inputs) or 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- feature_range: Tuple which defines the area to which the data should be scaled (default value = (-1,1))\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- min_max_scalor: min_max_scaler based of the data given\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### min_max_scaler()\n",
+ "\n",
+ "**Description:** \n",
+ "\n",
+ "Transforms a 3D-array with a given min_max_scaler (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- min_max_scalor: The min_max_scaler used for the transformation (default value: min_max_scalor)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### min_max_scaler_inv()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Transforms a 3D-array with a given min_max_scaler back to original form (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- min_max_scalor: The min_max_scaler used for the transformation (default value: min_max_scalor)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Normalize the data advanced version with scikit learn\n",
+ "def correct_array_steps(arr, steps= 8, num_inputs= 3): #steps > array_steps\n",
+ " if arr.shape[1] != steps:\n",
+ " _ = np.zeros((arr.shape[0], steps, num_inputs))\n",
+ " _[:,:arr.shape[1],:] += arr\n",
+ " arr = _\n",
+ " return arr\n",
+ "\n",
+ "\n",
+ "#set the transormation based on training set\n",
+ "def set_min_max_scaler(arr, feature_range= (-.9,0.9)):\n",
+ " min_max_scalor = preprocessing.MinMaxScaler(feature_range=feature_range)\n",
+ " if len(arr.shape) == 3:\n",
+ " arr = reshapor(min_max_scalor.fit_transform(reshapor_inv(arr))) \n",
+ " else:\n",
+ " arr = min_max_scalor.fit_transform(arr)\n",
+ " return min_max_scalor\n",
+ "\n",
+ "min_max_scalor = set_min_max_scaler(train_set)\n",
+ "\n",
+ "\n",
+ "#transform data\n",
+ "def min_max_scaler(arr, min_max_scalor= min_max_scalor):\n",
+ " num_inputs = arr.shape[2]\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(min_max_scalor.transform(reshapor_inv(arr)), num_inputs=num_inputs)\n",
+ " return arr\n",
+ " \n",
+ "#inverse transformation\n",
+ "def min_max_scaler_inv(arr, min_max_scalor= min_max_scalor):\n",
+ " num_inputs = arr.shape[2]\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(min_max_scalor.inverse_transform(reshapor_inv(arr)), num_inputs=num_inputs)\n",
+ " return arr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Normalization based on a standard_scaler from sklearn\n",
+ "\n",
+ "\n",
+ "### set_std_scaler()\n",
+ "\n",
+ "**Description: **\n",
+ "\n",
+ "Sets the std_scaler based on the dataset given (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 2D of shape(particle_number, inputs) or 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- feature_range: Tuple which defines the area to which the data should be scaled (default value = (-1,1))\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- std_scalor: std_scaler based of the data given\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### std_scaler()\n",
+ "\n",
+ "**Description: **\n",
+ "\n",
+ "Transforms a 3D-array with a given std_scaler (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: The std_scaler used for the transformation (default value: std_scaler)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### std_scaler_inv()\n",
+ "\n",
+ "**Description: **\n",
+ "\n",
+ "Transforms a 3D-array with a given std_scaler back to original form (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: The std_scaler used for the transformation (default value: std_scaler)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Normalize the data advanced version with scikit learn - Standard scaler\n",
+ "\n",
+ "#set the transormation based on training set\n",
+ "def set_std_scaler(arr):\n",
+ " std_scalor = preprocessing.StandardScaler()\n",
+ " if len(arr.shape) == 3:\n",
+ " arr = reshapor(std_scalor.fit_transform(reshapor_inv(arr))) \n",
+ " else:\n",
+ " arr = std_scalor.fit_transform(arr)\n",
+ " return std_scalor\n",
+ "\n",
+ "std_scalor = set_std_scaler(train_set)\n",
+ "\n",
+ "#transform data\n",
+ "def std_scaler(arr, std_scalor= std_scalor, num_inputs=3):\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(std_scalor.transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ " \n",
+ "#inverse transformation\n",
+ "def std_scaler_inv(arr, std_scalor= std_scalor, num_inputs=3):\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(std_scalor.inverse_transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#reshape the data\n",
+ "\n",
+ "train_set = reshapor(train_set)\n",
+ "test_set = reshapor(test_set)\n",
+ "\n",
+ "#print(train_set[0,:,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Scale the data using the min_max_scaler or the std_scaler defined before\n",
+ "\n",
+ "### scaler()\n",
+ "\n",
+ "****Description:****\n",
+ "\n",
+ "Shapes and transforms the data with a given sklearn scaler\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: std_scaler of sklearn (default value = std_scalor defined above)\n",
+ "- min_max_scalor: min_max_scalor of sklearn (default value = min_max_scalor defined above)\n",
+ "- scalerfunc: string of the name of the scalerfunction to be used (default value = \"minmax\")\n",
+ "- scalor: sklearn scaler, if a scaler is given the array arr will be shaped and scaled with scalor (default value false)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Shaped and transformed 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "\n",
+ "**Additional comments:**\n",
+ "\n",
+ "By default included values for scalerfunc are \"minmax\" and \"std\" for a min_max_scaler and a std_scaler respectively.\n",
+ "For other scalers a scaler has to be given scalor argument.\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### scaler_inv()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Shapes and transforms the data back to its original shape with a given sklearn scaler\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: std_scaler of sklearn (default value = std_scalor defined above)\n",
+ "- min_max_scalor: min_max_scalor of sklearn (default value = min_max_scalor defined above)\n",
+ "- scalerfunc: string of the name of the scalerfunction to be used (default value = \"minmax\")\n",
+ "- scalor: sklearn scaler, if a scaler is given the array arr will be shaped and scaled with scalor (default value false)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Shaped and inverse transformed 3D-array of shape(particle_number, timesteps, num_inputs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def scaler(arr, std_scalor= std_scalor, min_max_scalor= min_max_scalor, scalerfunc= \"minmax\", scalor = False):\n",
+ " \n",
+ " if scalor != False:\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(scalor.transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"std\":\n",
+ " arr = std_scaler(arr, std_scalor= std_scalor)\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"minmax\":\n",
+ " arr = min_max_scaler(arr, min_max_scalor= min_max_scalor)\n",
+ " return arr\n",
+ " \n",
+ " else:\n",
+ " raise ValueError(\"Uknown scaler chosen: {}\".format(scalerfunc))\n",
+ "\n",
+ "def scaler_inv(arr, std_scalor= std_scalor, min_max_scalor= min_max_scalor, scalerfunc= \"minmax\", scalor = False):\n",
+ "\n",
+ " num_inputs = arr.shape[2]\n",
+ " \n",
+ " if scalor != False:\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(scalor.inverse_transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"std\":\n",
+ " arr = std_scaler_inv(arr, std_scalor= std_scalor)\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"minmax\":\n",
+ " arr = min_max_scaler_inv(arr, min_max_scalor= min_max_scalor)\n",
+ " return arr\n",
+ " \n",
+ " else:\n",
+ " raise ValueError(\"Uknown scaler chosen: {}\".format(scalerfunc))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#scale the data\n",
+ "scalor = pkl.load( open(\"scalor.pkl\" , \"rb\" ) )\n",
+ "#scalor = min_max_scalor\n",
+ "\n",
+ "#pkl.dump(scalor , open(\"scalor.pkl\" , \"wb\" ) )\n",
+ "\n",
+ "func = \"minmax\"\n",
+ "\n",
+ "train_set = scaler(train_set, scalerfunc = func, scalor= scalor)\n",
+ "test_set = scaler(test_set, scalerfunc = func, scalor= scalor)\n",
+ "\n",
+ "if func == \"minmax\":\n",
+ " scalor = min_max_scalor\n",
+ "elif func == \"std\":\n",
+ " scalor = std_scalor\n",
+ "\n",
+ "#print(train_set[0,:,:])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# truncate and pad input sequences\n",
+ "max_review_length = 4\n",
+ "filepath = \"trained_models/keras_RNN2.h5\"\n",
+ "\n",
+ "X_train = train_set[:,:-4,:]\n",
+ "y_train = reshapor_inv(train_set[:,4:,:])\n",
+ "X_test = test_set[:,:-4,:]\n",
+ "y_test = reshapor_inv(test_set[:,4:,:])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def custom_loss(y_true, y_pred):\n",
+ " loss = 0\n",
+ " \n",
+ " #tensor_shape = K.int_shape(y_true)[1]\n",
+ " true_y_val = K.get_value(y_true)\n",
+ " pred_y_val = K.get_value(y_pred)\n",
+ " \n",
+ " for step in range(4):\n",
+ " true_step_coord = true_y_val[3*step: 3*step+3]\n",
+ " pred_step_coord = pred_y_val[3*step: 3*step+3]\n",
+ "\n",
+ " loss += K.sqrt(mean_squared_error(true_step_coord, pred_step_coord))\n",
+ " \n",
+ " return loss\n",
+ "\n",
+ " \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "print(y_train.shape)\n",
+ "\n",
+ "#tf.reset_default_graph()\n",
+ "\n",
+ "callbacks = [\n",
+ " EarlyStopping(monitor='val_loss', patience=30, min_delta=0.0001),\n",
+ " ModelCheckpoint(filepath, monitor='val_loss', save_best_only=True),\n",
+ " History(),\n",
+ " #TensorBoard(log_dir= filepath[:-3] + \"/logs\", histogram_freq=1, batch_size=50)\n",
+ "]\n",
+ "\n",
+ "#\n",
+ "\n",
+ "# create the model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(50, return_sequences=True, input_shape=(4,3), activation = 'selu'))\n",
+ "#model.add(BatchNormalization())\n",
+ "model.add(LSTM(50, return_sequences=False, activation = 'selu')) \n",
+ "#model.add(BatchNormalization())\n",
+ "model.add(Dense(50, activation='selu'))\n",
+ "#model.add(BatchNormalization())\n",
+ "model.add(Dense(12, activation='linear'))\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mse'])\n",
+ "print(model.summary())\n",
+ "\n",
+ "\n",
+ "model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=500, batch_size=50, callbacks= callbacks, verbose = 1)\n",
+ "# model_4_to_4 = load_model(filepath)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model_4_to_4 = load_model(filepath)\n",
+ "\n",
+ "prediction = model_4_to_4.predict(X_test)\n",
+ "\n",
+ "print(model_4_to_4.summary())\n",
+ "\n",
+ "print(prediction[615,:]-y_test[615,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Finding the right track\n",
+ "\n",
+ "***\n",
+ "\n",
+ "## Loading the data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " x1 | \n",
+ " y1 | \n",
+ " z1 | \n",
+ " x2 | \n",
+ " y2 | \n",
+ " z2 | \n",
+ " x3 | \n",
+ " y3 | \n",
+ " z3 | \n",
+ " x4 | \n",
+ " ... | \n",
+ " z6 | \n",
+ " x7 | \n",
+ " y7 | \n",
+ " z7 | \n",
+ " x8 | \n",
+ " y8 | \n",
+ " z8 | \n",
+ " event | \n",
+ " trackchi2 | \n",
+ " matched | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " -2.248582 | \n",
+ " 23.380732 | \n",
+ " -6.040000 | \n",
+ " -6.489999 | \n",
+ " 28.598572 | \n",
+ " -5.640000 | \n",
+ " -21.724771 | \n",
+ " 67.052704 | \n",
+ " -3.240000 | \n",
+ " -22.225971 | \n",
+ " ... | \n",
+ " 7.559999 | \n",
+ " 28.802656 | \n",
+ " 3.901462 | \n",
+ " 6.040000 | \n",
+ " 21.421392 | \n",
+ " 6.978845 | \n",
+ " 5.640000 | \n",
+ " 124.0 | \n",
+ " 13.396379 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -4.040000 | \n",
+ " 26.880571 | \n",
+ " -9.817033 | \n",
+ " -4.840000 | \n",
+ " 19.684010 | \n",
+ " -11.173258 | \n",
+ " -5.000000 | \n",
+ " 220.0 | \n",
+ " 3.036235 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -4.040000 | \n",
+ " 26.880571 | \n",
+ " -9.817033 | \n",
+ " -4.840000 | \n",
+ " 19.684010 | \n",
+ " -11.173258 | \n",
+ " -5.000000 | \n",
+ " 220.0 | \n",
+ " 3.036235 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -3.080000 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -1.400000 | \n",
+ " 22.469944 | \n",
+ " -4.447415 | \n",
+ " -1.080000 | \n",
+ " 220.0 | \n",
+ " 25.033289 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -3.080000 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -1.400000 | \n",
+ " 22.469944 | \n",
+ " -4.447415 | \n",
+ " -1.080000 | \n",
+ " 220.0 | \n",
+ " 25.033289 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " -6.018011 | \n",
+ " 21.819384 | \n",
+ " -23.240000 | \n",
+ " -10.009998 | \n",
+ " 28.598572 | \n",
+ " -23.320000 | \n",
+ " -25.356653 | \n",
+ " 66.079544 | \n",
+ " -23.639999 | \n",
+ " -28.309521 | \n",
+ " ... | \n",
+ " -6.920000 | \n",
+ " 25.644503 | \n",
+ " -13.621260 | \n",
+ " -6.200001 | \n",
+ " 20.724909 | \n",
+ " -8.660306 | \n",
+ " -6.200001 | \n",
+ " 312.0 | \n",
+ " 27.834667 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " -6.018011 | \n",
+ " 21.819384 | \n",
+ " -23.240000 | \n",
+ " -10.009998 | \n",
+ " 28.598572 | \n",
+ " -23.320000 | \n",
+ " -25.356653 | \n",
+ " 66.079544 | \n",
+ " -23.639999 | \n",
+ " -28.309521 | \n",
+ " ... | \n",
+ " -6.920000 | \n",
+ " 25.644503 | \n",
+ " -13.621260 | \n",
+ " -6.200001 | \n",
+ " 20.724909 | \n",
+ " -8.660306 | \n",
+ " -6.200001 | \n",
+ " 312.0 | \n",
+ " 27.834667 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " -6.018011 | \n",
+ " 21.819384 | \n",
+ " -23.240000 | \n",
+ " -10.009998 | \n",
+ " 28.598572 | \n",
+ " -23.320000 | \n",
+ " -25.356653 | \n",
+ " 66.079544 | \n",
+ " -23.639999 | \n",
+ " -28.309521 | \n",
+ " ... | \n",
+ " -18.360001 | \n",
+ " 25.490572 | \n",
+ " -16.829796 | \n",
+ " -18.040001 | \n",
+ " 19.622780 | \n",
+ " -11.321079 | \n",
+ " -18.040001 | \n",
+ " 312.0 | \n",
+ " 7.292468 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 6.590816 | \n",
+ " 21.582119 | \n",
+ " -40.680000 | \n",
+ " 9.941264 | \n",
+ " 28.127028 | \n",
+ " -40.840000 | \n",
+ " 33.714462 | \n",
+ " 61.815155 | \n",
+ " -41.639999 | \n",
+ " 42.568947 | \n",
+ " ... | \n",
+ " -53.320000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " -54.439999 | \n",
+ " -5.408250 | \n",
+ " -22.071955 | \n",
+ " -54.520000 | \n",
+ " 326.0 | \n",
+ " 10.081528 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 20.043732 | \n",
+ " 10.304811 | \n",
+ " -22.680000 | \n",
+ " 26.009144 | \n",
+ " 12.499014 | \n",
+ " -22.440001 | \n",
+ " 68.274330 | \n",
+ " 17.165602 | \n",
+ " -21.240000 | \n",
+ " 80.994446 | \n",
+ " ... | \n",
+ " -33.239998 | \n",
+ " -20.296682 | \n",
+ " -20.603376 | \n",
+ " -32.279999 | \n",
+ " -17.410870 | \n",
+ " -16.661102 | \n",
+ " -32.119999 | \n",
+ " 352.0 | \n",
+ " 43.565620 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 20.043732 | \n",
+ " 10.304811 | \n",
+ " -22.680000 | \n",
+ " 26.009144 | \n",
+ " 12.499014 | \n",
+ " -22.440001 | \n",
+ " 68.274330 | \n",
+ " 17.165602 | \n",
+ " -21.240000 | \n",
+ " 80.994446 | \n",
+ " ... | \n",
+ " -10.840000 | \n",
+ " -21.332224 | \n",
+ " -19.851011 | \n",
+ " -10.440001 | \n",
+ " -17.870090 | \n",
+ " -15.552447 | \n",
+ " -10.440001 | \n",
+ " 352.0 | \n",
+ " 16.855164 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " -16.069820 | \n",
+ " 17.655788 | \n",
+ " 15.719999 | \n",
+ " -21.218962 | \n",
+ " 19.933302 | \n",
+ " 15.559999 | \n",
+ " -57.205452 | \n",
+ " 42.342068 | \n",
+ " 14.440001 | \n",
+ " -65.752090 | \n",
+ " ... | \n",
+ " 11.000000 | \n",
+ " 27.442982 | \n",
+ " 8.086111 | \n",
+ " 10.280000 | \n",
+ " 20.747869 | \n",
+ " 8.604874 | \n",
+ " 10.120000 | \n",
+ " 539.0 | \n",
+ " 16.259047 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " -6.313652 | \n",
+ " 21.696924 | \n",
+ " 16.039999 | \n",
+ " -4.489999 | \n",
+ " 28.598572 | \n",
+ " 15.639999 | \n",
+ " 15.484889 | \n",
+ " 68.724678 | \n",
+ " 14.120000 | \n",
+ " 23.103405 | \n",
+ " ... | \n",
+ " 28.520000 | \n",
+ " -7.870180 | \n",
+ " -29.631758 | \n",
+ " 31.000000 | \n",
+ " -9.177679 | \n",
+ " -20.510605 | \n",
+ " 31.799999 | \n",
+ " 668.0 | \n",
+ " 37.193771 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -3.800000 | \n",
+ " 5.770000 | \n",
+ " -28.598572 | \n",
+ " -5.240001 | \n",
+ " 1.287747 | \n",
+ " -23.778723 | \n",
+ " -5.400001 | \n",
+ " 891.0 | \n",
+ " 7.583350 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -3.800000 | \n",
+ " 5.770000 | \n",
+ " -28.598572 | \n",
+ " -5.240001 | \n",
+ " 1.287747 | \n",
+ " -23.778723 | \n",
+ " -5.400001 | \n",
+ " 891.0 | \n",
+ " 7.583350 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -3.320000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " -2.840000 | \n",
+ " 2.544224 | \n",
+ " -23.258274 | \n",
+ " -2.680000 | \n",
+ " 891.0 | \n",
+ " 4.611990 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -32.919998 | \n",
+ " 11.049999 | \n",
+ " -28.598572 | \n",
+ " -35.720001 | \n",
+ " 4.244162 | \n",
+ " -22.554136 | \n",
+ " -36.119999 | \n",
+ " 891.0 | \n",
+ " 35.642284 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " -3.412670 | \n",
+ " -22.898550 | \n",
+ " -22.360001 | \n",
+ " -5.110001 | \n",
+ " -28.598572 | \n",
+ " -21.880001 | \n",
+ " -25.453243 | \n",
+ " -66.053665 | \n",
+ " -19.160000 | \n",
+ " -33.054714 | \n",
+ " ... | \n",
+ " -10.040001 | \n",
+ " -6.569999 | \n",
+ " 28.598572 | \n",
+ " -9.800000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " -9.720000 | \n",
+ " 1026.0 | \n",
+ " 36.178505 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -48.759998 | \n",
+ " -19.520025 | \n",
+ " -21.167650 | \n",
+ " -49.799999 | \n",
+ " -17.012880 | \n",
+ " -17.621937 | \n",
+ " -49.880001 | \n",
+ " 1027.0 | \n",
+ " 7.386358 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -56.200001 | \n",
+ " -17.319500 | \n",
+ " -22.766426 | \n",
+ " -56.680000 | \n",
+ " -14.425314 | \n",
+ " -18.336964 | \n",
+ " -56.840000 | \n",
+ " 1027.0 | \n",
+ " 16.478861 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -56.200001 | \n",
+ " -17.319500 | \n",
+ " -22.766426 | \n",
+ " -56.680000 | \n",
+ " -14.425314 | \n",
+ " -18.336964 | \n",
+ " -56.840000 | \n",
+ " 1027.0 | \n",
+ " 16.478861 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ " 1067.0 | \n",
+ " 14.580906 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ " 1067.0 | \n",
+ " 14.580906 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ " 1067.0 | \n",
+ " 14.580906 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " -17.548027 | \n",
+ " 17.043495 | \n",
+ " 14.920000 | \n",
+ " -19.342041 | \n",
+ " 21.296963 | \n",
+ " 14.839999 | \n",
+ " -30.440884 | \n",
+ " 63.705154 | \n",
+ " 13.720000 | \n",
+ " -31.450989 | \n",
+ " ... | \n",
+ " -27.719999 | \n",
+ " 16.429581 | \n",
+ " -23.412991 | \n",
+ " -29.959999 | \n",
+ " 12.226481 | \n",
+ " -19.247751 | \n",
+ " -30.280001 | \n",
+ " 1097.0 | \n",
+ " 44.685917 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " -17.548027 | \n",
+ " 17.043495 | \n",
+ " 14.920000 | \n",
+ " -19.342041 | \n",
+ " 21.296963 | \n",
+ " 14.839999 | \n",
+ " -30.440884 | \n",
+ " 63.705154 | \n",
+ " 13.720000 | \n",
+ " -31.450989 | \n",
+ " ... | \n",
+ " -27.719999 | \n",
+ " 16.429581 | \n",
+ " -23.412991 | \n",
+ " -29.959999 | \n",
+ " 12.226481 | \n",
+ " -19.247751 | \n",
+ " -30.280001 | \n",
+ " 1097.0 | \n",
+ " 44.685917 | \n",
+ " 0.0 | \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",
+ " 109791 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ " 19090.0 | \n",
+ " 23.234200 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109792 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ " 19090.0 | \n",
+ " 23.234200 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109793 | \n",
+ " -19.622780 | \n",
+ " 11.321079 | \n",
+ " 12.679999 | \n",
+ " -26.435587 | \n",
+ " 11.186554 | \n",
+ " 12.599999 | \n",
+ " -67.523758 | \n",
+ " 19.966785 | \n",
+ " 11.960000 | \n",
+ " -78.462158 | \n",
+ " ... | \n",
+ " -21.480000 | \n",
+ " 20.102518 | \n",
+ " 20.744446 | \n",
+ " -22.520000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " -22.520000 | \n",
+ " 19109.0 | \n",
+ " 29.602116 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109794 | \n",
+ " 8.309232 | \n",
+ " -20.870329 | \n",
+ " 10.360000 | \n",
+ " 14.487940 | \n",
+ " -24.823675 | \n",
+ " 10.440000 | \n",
+ " 45.608902 | \n",
+ " -53.938618 | \n",
+ " 11.000000 | \n",
+ " 52.103645 | \n",
+ " ... | \n",
+ " -4.840000 | \n",
+ " -27.986851 | \n",
+ " -6.412251 | \n",
+ " -5.400001 | \n",
+ " -20.686640 | \n",
+ " -8.752694 | \n",
+ " -5.400001 | \n",
+ " 19130.0 | \n",
+ " 35.618042 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109795 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 38.599998 | \n",
+ " -26.262537 | \n",
+ " 11.719147 | \n",
+ " 37.959999 | \n",
+ " -20.571835 | \n",
+ " 9.029858 | \n",
+ " 37.879997 | \n",
+ " 19146.0 | \n",
+ " 29.943666 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109796 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 43.320000 | \n",
+ " -26.336700 | \n",
+ " 11.490892 | \n",
+ " 42.520000 | \n",
+ " -20.602449 | \n",
+ " 8.955948 | \n",
+ " 42.439999 | \n",
+ " 19146.0 | \n",
+ " 34.557800 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109797 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 45.160000 | \n",
+ " -26.460308 | \n",
+ " 11.110470 | \n",
+ " 45.720001 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " 45.720001 | \n",
+ " 19146.0 | \n",
+ " 17.682192 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109798 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109799 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109800 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109801 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109802 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109803 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109804 | \n",
+ " -8.882037 | \n",
+ " -20.633064 | \n",
+ " -6.040000 | \n",
+ " -6.230000 | \n",
+ " -28.598572 | \n",
+ " -5.800000 | \n",
+ " -1.250000 | \n",
+ " -70.390724 | \n",
+ " -4.680000 | \n",
+ " -2.370000 | \n",
+ " ... | \n",
+ " -11.480000 | \n",
+ " -25.941158 | \n",
+ " 12.708245 | \n",
+ " -10.840000 | \n",
+ " -21.857651 | \n",
+ " 5.925623 | \n",
+ " -10.520000 | \n",
+ " 19219.0 | \n",
+ " 32.846611 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109805 | \n",
+ " -9.713529 | \n",
+ " 20.288651 | \n",
+ " 35.320000 | \n",
+ " -12.416857 | \n",
+ " 26.328405 | \n",
+ " 35.400002 | \n",
+ " -10.109999 | \n",
+ " 70.390724 | \n",
+ " 34.279999 | \n",
+ " -1.789999 | \n",
+ " ... | \n",
+ " 42.279999 | \n",
+ " 28.314409 | \n",
+ " -5.404131 | \n",
+ " 47.400002 | \n",
+ " 22.531174 | \n",
+ " -4.299595 | \n",
+ " 48.200001 | \n",
+ " 19260.0 | \n",
+ " 9.661584 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109806 | \n",
+ " -9.713529 | \n",
+ " 20.288651 | \n",
+ " 35.320000 | \n",
+ " -12.416857 | \n",
+ " 26.328405 | \n",
+ " 35.400002 | \n",
+ " -10.109999 | \n",
+ " 70.390724 | \n",
+ " 34.279999 | \n",
+ " -1.789999 | \n",
+ " ... | \n",
+ " 42.279999 | \n",
+ " 28.314409 | \n",
+ " -5.404131 | \n",
+ " 47.400002 | \n",
+ " 22.531174 | \n",
+ " -4.299595 | \n",
+ " 48.200001 | \n",
+ " 19260.0 | \n",
+ " 9.661584 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109807 | \n",
+ " -9.713529 | \n",
+ " 20.288651 | \n",
+ " 35.320000 | \n",
+ " -12.416857 | \n",
+ " 26.328405 | \n",
+ " 35.400002 | \n",
+ " -10.109999 | \n",
+ " 70.390724 | \n",
+ " 34.279999 | \n",
+ " -1.789999 | \n",
+ " ... | \n",
+ " 42.279999 | \n",
+ " 28.314409 | \n",
+ " -5.404131 | \n",
+ " 47.400002 | \n",
+ " 22.531174 | \n",
+ " -4.299595 | \n",
+ " 48.200001 | \n",
+ " 19260.0 | \n",
+ " 9.661584 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109808 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ " 19518.0 | \n",
+ " 11.021622 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109809 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ " 19518.0 | \n",
+ " 11.021622 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109810 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ " 19518.0 | \n",
+ " 11.021622 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109811 | \n",
+ " -19.921274 | \n",
+ " -10.600453 | \n",
+ " 19.559999 | \n",
+ " -24.649467 | \n",
+ " -16.683662 | \n",
+ " 19.400000 | \n",
+ " -56.025154 | \n",
+ " -43.743034 | \n",
+ " 18.840000 | \n",
+ " -65.964081 | \n",
+ " ... | \n",
+ " 9.959999 | \n",
+ " -0.570000 | \n",
+ " 28.598572 | \n",
+ " 8.599999 | \n",
+ " -2.470313 | \n",
+ " 23.288887 | \n",
+ " 8.360000 | \n",
+ " 19551.0 | \n",
+ " 7.543967 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109812 | \n",
+ " -19.921274 | \n",
+ " -10.600453 | \n",
+ " 19.559999 | \n",
+ " -24.649467 | \n",
+ " -16.683662 | \n",
+ " 19.400000 | \n",
+ " -56.025154 | \n",
+ " -43.743034 | \n",
+ " 18.840000 | \n",
+ " -65.964081 | \n",
+ " ... | \n",
+ " 9.959999 | \n",
+ " -0.570000 | \n",
+ " 28.598572 | \n",
+ " 8.599999 | \n",
+ " -2.470313 | \n",
+ " 23.288887 | \n",
+ " 8.360000 | \n",
+ " 19551.0 | \n",
+ " 7.543967 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109813 | \n",
+ " 1.860553 | \n",
+ " 23.541458 | \n",
+ " -11.480000 | \n",
+ " 3.430001 | \n",
+ " 28.598572 | \n",
+ " -11.320001 | \n",
+ " 25.453243 | \n",
+ " 66.053665 | \n",
+ " -10.040001 | \n",
+ " 34.135880 | \n",
+ " ... | \n",
+ " -5.640000 | \n",
+ " 0.570000 | \n",
+ " -28.598572 | \n",
+ " -6.120000 | \n",
+ " -0.382345 | \n",
+ " -24.153751 | \n",
+ " -6.200001 | \n",
+ " 19617.0 | \n",
+ " 8.062763 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109814 | \n",
+ " 23.174084 | \n",
+ " -2.747478 | \n",
+ " 11.320000 | \n",
+ " 27.646933 | \n",
+ " -7.458413 | \n",
+ " 11.559999 | \n",
+ " 53.698204 | \n",
+ " -45.849316 | \n",
+ " 13.320000 | \n",
+ " 58.983761 | \n",
+ " ... | \n",
+ " 40.439999 | \n",
+ " -11.704922 | \n",
+ " 26.845655 | \n",
+ " 41.320000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " 41.480000 | \n",
+ " 19682.0 | \n",
+ " 17.139938 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109815 | \n",
+ " 23.174084 | \n",
+ " -2.747478 | \n",
+ " 11.320000 | \n",
+ " 27.646933 | \n",
+ " -7.458413 | \n",
+ " 11.559999 | \n",
+ " 53.698204 | \n",
+ " -45.849316 | \n",
+ " 13.320000 | \n",
+ " 58.983761 | \n",
+ " ... | \n",
+ " 40.439999 | \n",
+ " -11.704922 | \n",
+ " 26.845655 | \n",
+ " 41.320000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " 41.480000 | \n",
+ " 19682.0 | \n",
+ " 17.139938 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109816 | \n",
+ " -12.374302 | \n",
+ " 19.186522 | \n",
+ " -29.720001 | \n",
+ " -16.429581 | \n",
+ " 23.412991 | \n",
+ " -29.799999 | \n",
+ " -33.766418 | \n",
+ " 61.785152 | \n",
+ " -30.760000 | \n",
+ " -34.045780 | \n",
+ " ... | \n",
+ " -45.639999 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -48.040001 | \n",
+ " 23.847605 | \n",
+ " -1.121449 | \n",
+ " -48.279999 | \n",
+ " 19721.0 | \n",
+ " 11.005083 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109817 | \n",
+ " -20.939211 | \n",
+ " 8.142934 | \n",
+ " -22.440001 | \n",
+ " -26.410866 | \n",
+ " 11.262639 | \n",
+ " -22.760000 | \n",
+ " -59.615158 | \n",
+ " 37.524971 | \n",
+ " -24.840000 | \n",
+ " -67.946777 | \n",
+ " ... | \n",
+ " -56.279999 | \n",
+ " 26.410866 | \n",
+ " -11.262639 | \n",
+ " -57.720001 | \n",
+ " 20.173845 | \n",
+ " -9.990692 | \n",
+ " -57.959999 | \n",
+ " 19787.0 | \n",
+ " 7.796933 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109818 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -25.080000 | \n",
+ " -20.053978 | \n",
+ " 20.779713 | \n",
+ " -25.560001 | \n",
+ " -16.661102 | \n",
+ " 17.410870 | \n",
+ " -25.560001 | \n",
+ " 19826.0 | \n",
+ " 19.236219 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109819 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -25.080000 | \n",
+ " -20.053978 | \n",
+ " 20.779713 | \n",
+ " -25.560001 | \n",
+ " -16.661102 | \n",
+ " 17.410870 | \n",
+ " -25.560001 | \n",
+ " 19826.0 | \n",
+ " 19.236219 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109820 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -9.080000 | \n",
+ " -20.765911 | \n",
+ " 20.262461 | \n",
+ " -7.720000 | \n",
+ " -17.769758 | \n",
+ " 16.951651 | \n",
+ " -7.560000 | \n",
+ " 19826.0 | \n",
+ " 20.784391 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
109821 rows × 27 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " x1 y1 z1 x2 y2 z2 \\\n",
+ "0 -2.248582 23.380732 -6.040000 -6.489999 28.598572 -5.640000 \n",
+ "1 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "2 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "3 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "4 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "5 -6.018011 21.819384 -23.240000 -10.009998 28.598572 -23.320000 \n",
+ "6 -6.018011 21.819384 -23.240000 -10.009998 28.598572 -23.320000 \n",
+ "7 -6.018011 21.819384 -23.240000 -10.009998 28.598572 -23.320000 \n",
+ "8 6.590816 21.582119 -40.680000 9.941264 28.127028 -40.840000 \n",
+ "9 20.043732 10.304811 -22.680000 26.009144 12.499014 -22.440001 \n",
+ "10 20.043732 10.304811 -22.680000 26.009144 12.499014 -22.440001 \n",
+ "11 -16.069820 17.655788 15.719999 -21.218962 19.933302 15.559999 \n",
+ "12 -6.313652 21.696924 16.039999 -4.489999 28.598572 15.639999 \n",
+ "13 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "14 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "15 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "16 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "17 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "18 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "19 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "20 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "21 -3.412670 -22.898550 -22.360001 -5.110001 -28.598572 -21.880001 \n",
+ "22 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "23 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "24 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "25 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "26 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "27 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "28 -17.548027 17.043495 14.920000 -19.342041 21.296963 14.839999 \n",
+ "29 -17.548027 17.043495 14.920000 -19.342041 21.296963 14.839999 \n",
+ "... ... ... ... ... ... ... \n",
+ "109791 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "109792 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "109793 -19.622780 11.321079 12.679999 -26.435587 11.186554 12.599999 \n",
+ "109794 8.309232 -20.870329 10.360000 14.487940 -24.823675 10.440000 \n",
+ "109795 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "109796 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "109797 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "109798 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109799 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109800 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109801 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109802 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109803 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109804 -8.882037 -20.633064 -6.040000 -6.230000 -28.598572 -5.800000 \n",
+ "109805 -9.713529 20.288651 35.320000 -12.416857 26.328405 35.400002 \n",
+ "109806 -9.713529 20.288651 35.320000 -12.416857 26.328405 35.400002 \n",
+ "109807 -9.713529 20.288651 35.320000 -12.416857 26.328405 35.400002 \n",
+ "109808 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "109809 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "109810 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "109811 -19.921274 -10.600453 19.559999 -24.649467 -16.683662 19.400000 \n",
+ "109812 -19.921274 -10.600453 19.559999 -24.649467 -16.683662 19.400000 \n",
+ "109813 1.860553 23.541458 -11.480000 3.430001 28.598572 -11.320001 \n",
+ "109814 23.174084 -2.747478 11.320000 27.646933 -7.458413 11.559999 \n",
+ "109815 23.174084 -2.747478 11.320000 27.646933 -7.458413 11.559999 \n",
+ "109816 -12.374302 19.186522 -29.720001 -16.429581 23.412991 -29.799999 \n",
+ "109817 -20.939211 8.142934 -22.440001 -26.410866 11.262639 -22.760000 \n",
+ "109818 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "109819 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "109820 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "\n",
+ " x3 y3 z3 x4 ... z6 \\\n",
+ "0 -21.724771 67.052704 -3.240000 -22.225971 ... 7.559999 \n",
+ "1 -66.736946 22.903200 4.360000 -74.096100 ... -4.040000 \n",
+ "2 -66.736946 22.903200 4.360000 -74.096100 ... -4.040000 \n",
+ "3 -66.736946 22.903200 4.360000 -74.096100 ... -3.080000 \n",
+ "4 -66.736946 22.903200 4.360000 -74.096100 ... -3.080000 \n",
+ "5 -25.356653 66.079544 -23.639999 -28.309521 ... -6.920000 \n",
+ "6 -25.356653 66.079544 -23.639999 -28.309521 ... -6.920000 \n",
+ "7 -25.356653 66.079544 -23.639999 -28.309521 ... -18.360001 \n",
+ "8 33.714462 61.815155 -41.639999 42.568947 ... -53.320000 \n",
+ "9 68.274330 17.165602 -21.240000 80.994446 ... -33.239998 \n",
+ "10 68.274330 17.165602 -21.240000 80.994446 ... -10.840000 \n",
+ "11 -57.205452 42.342068 14.440001 -65.752090 ... 11.000000 \n",
+ "12 15.484889 68.724678 14.120000 23.103405 ... 28.520000 \n",
+ "13 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "14 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "15 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "16 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "17 -32.935036 62.265152 -10.600000 -32.243843 ... -3.800000 \n",
+ "18 -32.935036 62.265152 -10.600000 -32.243843 ... -3.800000 \n",
+ "19 -32.935036 62.265152 -10.600000 -32.243843 ... -3.320000 \n",
+ "20 -32.935036 62.265152 -10.600000 -32.243843 ... -32.919998 \n",
+ "21 -25.453243 -66.053665 -19.160000 -33.054714 ... -10.040001 \n",
+ "22 64.025154 29.886627 -44.200001 76.569237 ... -48.759998 \n",
+ "23 64.025154 29.886627 -44.200001 76.569237 ... -56.200001 \n",
+ "24 64.025154 29.886627 -44.200001 76.569237 ... -56.200001 \n",
+ "25 -67.813629 18.884949 19.320000 -78.018410 ... 43.400002 \n",
+ "26 -67.813629 18.884949 19.320000 -78.018410 ... 43.400002 \n",
+ "27 -67.813629 18.884949 19.320000 -78.018410 ... 43.400002 \n",
+ "28 -30.440884 63.705154 13.720000 -31.450989 ... -27.719999 \n",
+ "29 -30.440884 63.705154 13.720000 -31.450989 ... -27.719999 \n",
+ "... ... ... ... ... ... ... \n",
+ "109791 -33.783745 -61.775158 27.320000 -44.113327 ... 53.799999 \n",
+ "109792 -33.783745 -61.775158 27.320000 -44.113327 ... 53.799999 \n",
+ "109793 -67.523758 19.966785 11.960000 -78.462158 ... -21.480000 \n",
+ "109794 45.608902 -53.938618 11.000000 52.103645 ... -4.840000 \n",
+ "109795 46.061451 -53.486069 35.000000 51.978550 ... 38.599998 \n",
+ "109796 46.061451 -53.486069 35.000000 51.978550 ... 43.320000 \n",
+ "109797 46.061451 -53.486069 35.000000 51.978550 ... 45.160000 \n",
+ "109798 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109799 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109800 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109801 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109802 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109803 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109804 -1.250000 -70.390724 -4.680000 -2.370000 ... -11.480000 \n",
+ "109805 -10.109999 70.390724 34.279999 -1.789999 ... 42.279999 \n",
+ "109806 -10.109999 70.390724 34.279999 -1.789999 ... 42.279999 \n",
+ "109807 -10.109999 70.390724 34.279999 -1.789999 ... 42.279999 \n",
+ "109808 15.929216 -68.605621 0.280000 18.170271 ... 42.759998 \n",
+ "109809 15.929216 -68.605621 0.280000 18.170271 ... 42.759998 \n",
+ "109810 15.929216 -68.605621 0.280000 18.170271 ... 42.759998 \n",
+ "109811 -56.025154 -43.743034 18.840000 -65.964081 ... 9.959999 \n",
+ "109812 -56.025154 -43.743034 18.840000 -65.964081 ... 9.959999 \n",
+ "109813 25.453243 66.053665 -10.040001 34.135880 ... -5.640000 \n",
+ "109814 53.698204 -45.849316 13.320000 58.983761 ... 40.439999 \n",
+ "109815 53.698204 -45.849316 13.320000 58.983761 ... 40.439999 \n",
+ "109816 -33.766418 61.785152 -30.760000 -34.045780 ... -45.639999 \n",
+ "109817 -59.615158 37.524971 -24.840000 -67.946777 ... -56.279999 \n",
+ "109818 25.279379 -66.100250 -38.040001 26.593647 ... -25.080000 \n",
+ "109819 25.279379 -66.100250 -38.040001 26.593647 ... -25.080000 \n",
+ "109820 25.279379 -66.100250 -38.040001 26.593647 ... -9.080000 \n",
+ "\n",
+ " x7 y7 z7 x8 y8 z8 \\\n",
+ "0 28.802656 3.901462 6.040000 21.421392 6.978845 5.640000 \n",
+ "1 26.880571 -9.817033 -4.840000 19.684010 -11.173258 -5.000000 \n",
+ "2 26.880571 -9.817033 -4.840000 19.684010 -11.173258 -5.000000 \n",
+ "3 29.303265 -2.360749 -1.400000 22.469944 -4.447415 -1.080000 \n",
+ "4 29.303265 -2.360749 -1.400000 22.469944 -4.447415 -1.080000 \n",
+ "5 25.644503 -13.621260 -6.200001 20.724909 -8.660306 -6.200001 \n",
+ "6 25.644503 -13.621260 -6.200001 20.724909 -8.660306 -6.200001 \n",
+ "7 25.490572 -16.829796 -18.040001 19.622780 -11.321079 -18.040001 \n",
+ "8 -6.150001 -28.598572 -54.439999 -5.408250 -22.071955 -54.520000 \n",
+ "9 -20.296682 -20.603376 -32.279999 -17.410870 -16.661102 -32.119999 \n",
+ "10 -21.332224 -19.851011 -10.440001 -17.870090 -15.552447 -10.440001 \n",
+ "11 27.442982 8.086111 10.280000 20.747869 8.604874 10.120000 \n",
+ "12 -7.870180 -29.631758 31.000000 -9.177679 -20.510605 31.799999 \n",
+ "13 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "14 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "15 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "16 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "17 5.770000 -28.598572 -5.240001 1.287747 -23.778723 -5.400001 \n",
+ "18 5.770000 -28.598572 -5.240001 1.287747 -23.778723 -5.400001 \n",
+ "19 7.690000 -28.598572 -2.840000 2.544224 -23.258274 -2.680000 \n",
+ "20 11.049999 -28.598572 -35.720001 4.244162 -22.554136 -36.119999 \n",
+ "21 -6.569999 28.598572 -9.800000 -4.835445 22.309217 -9.720000 \n",
+ "22 -19.520025 -21.167650 -49.799999 -17.012880 -17.621937 -49.880001 \n",
+ "23 -17.319500 -22.766426 -56.680000 -14.425314 -18.336964 -56.840000 \n",
+ "24 -17.319500 -22.766426 -56.680000 -14.425314 -18.336964 -56.840000 \n",
+ "25 24.624746 16.759747 44.840000 18.849760 13.187316 44.919998 \n",
+ "26 24.624746 16.759747 44.840000 18.849760 13.187316 44.919998 \n",
+ "27 24.624746 16.759747 44.840000 18.849760 13.187316 44.919998 \n",
+ "28 16.429581 -23.412991 -29.959999 12.226481 -19.247751 -30.280001 \n",
+ "29 16.429581 -23.412991 -29.959999 12.226481 -19.247751 -30.280001 \n",
+ "... ... ... ... ... ... ... \n",
+ "109791 14.924809 24.506271 54.840000 13.834032 18.581881 55.160000 \n",
+ "109792 14.924809 24.506271 54.840000 13.834032 18.581881 55.160000 \n",
+ "109793 20.102518 20.744446 -22.520000 13.834032 18.581881 -22.520000 \n",
+ "109794 -27.986851 -6.412251 -5.400001 -20.686640 -8.752694 -5.400001 \n",
+ "109795 -26.262537 11.719147 37.959999 -20.571835 9.029858 37.879997 \n",
+ "109796 -26.336700 11.490892 42.520000 -20.602449 8.955948 42.439999 \n",
+ "109797 -26.460308 11.110470 45.720001 -20.755524 8.586395 45.720001 \n",
+ "109798 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109799 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109800 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109801 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109802 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109803 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109804 -25.941158 12.708245 -10.840000 -21.857651 5.925623 -10.520000 \n",
+ "109805 28.314409 -5.404131 47.400002 22.531174 -4.299595 48.200001 \n",
+ "109806 28.314409 -5.404131 47.400002 22.531174 -4.299595 48.200001 \n",
+ "109807 28.314409 -5.404131 47.400002 22.531174 -4.299595 48.200001 \n",
+ "109808 -27.993032 6.393229 46.040001 -23.510843 1.934464 46.439999 \n",
+ "109809 -27.993032 6.393229 46.040001 -23.510843 1.934464 46.439999 \n",
+ "109810 -27.993032 6.393229 46.040001 -23.510843 1.934464 46.439999 \n",
+ "109811 -0.570000 28.598572 8.599999 -2.470313 23.288887 8.360000 \n",
+ "109812 -0.570000 28.598572 8.599999 -2.470313 23.288887 8.360000 \n",
+ "109813 0.570000 -28.598572 -6.120000 -0.382345 -24.153751 -6.200001 \n",
+ "109814 -11.704922 26.845655 41.320000 -4.835445 22.309217 41.480000 \n",
+ "109815 -11.704922 26.845655 41.320000 -4.835445 22.309217 41.480000 \n",
+ "109816 29.303265 -2.360749 -48.040001 23.847605 -1.121449 -48.279999 \n",
+ "109817 26.410866 -11.262639 -57.720001 20.173845 -9.990692 -57.959999 \n",
+ "109818 -20.053978 20.779713 -25.560001 -16.661102 17.410870 -25.560001 \n",
+ "109819 -20.053978 20.779713 -25.560001 -16.661102 17.410870 -25.560001 \n",
+ "109820 -20.765911 20.262461 -7.720000 -17.769758 16.951651 -7.560000 \n",
+ "\n",
+ " event trackchi2 matched \n",
+ "0 124.0 13.396379 1.0 \n",
+ "1 220.0 3.036235 1.0 \n",
+ "2 220.0 3.036235 1.0 \n",
+ "3 220.0 25.033289 0.0 \n",
+ "4 220.0 25.033289 0.0 \n",
+ "5 312.0 27.834667 0.0 \n",
+ "6 312.0 27.834667 0.0 \n",
+ "7 312.0 7.292468 0.0 \n",
+ "8 326.0 10.081528 1.0 \n",
+ "9 352.0 43.565620 0.0 \n",
+ "10 352.0 16.855164 1.0 \n",
+ "11 539.0 16.259047 0.0 \n",
+ "12 668.0 37.193771 1.0 \n",
+ "13 891.0 19.876373 0.0 \n",
+ "14 891.0 19.876373 0.0 \n",
+ "15 891.0 19.876373 0.0 \n",
+ "16 891.0 19.876373 0.0 \n",
+ "17 891.0 7.583350 0.0 \n",
+ "18 891.0 7.583350 0.0 \n",
+ "19 891.0 4.611990 1.0 \n",
+ "20 891.0 35.642284 0.0 \n",
+ "21 1026.0 36.178505 1.0 \n",
+ "22 1027.0 7.386358 1.0 \n",
+ "23 1027.0 16.478861 0.0 \n",
+ "24 1027.0 16.478861 0.0 \n",
+ "25 1067.0 14.580906 1.0 \n",
+ "26 1067.0 14.580906 1.0 \n",
+ "27 1067.0 14.580906 1.0 \n",
+ "28 1097.0 44.685917 0.0 \n",
+ "29 1097.0 44.685917 0.0 \n",
+ "... ... ... ... \n",
+ "109791 19090.0 23.234200 1.0 \n",
+ "109792 19090.0 23.234200 1.0 \n",
+ "109793 19109.0 29.602116 0.0 \n",
+ "109794 19130.0 35.618042 0.0 \n",
+ "109795 19146.0 29.943666 0.0 \n",
+ "109796 19146.0 34.557800 0.0 \n",
+ "109797 19146.0 17.682192 1.0 \n",
+ "109798 19171.0 15.471778 1.0 \n",
+ "109799 19171.0 15.471778 1.0 \n",
+ "109800 19171.0 15.471778 1.0 \n",
+ "109801 19171.0 15.471778 1.0 \n",
+ "109802 19171.0 15.471778 1.0 \n",
+ "109803 19171.0 15.471778 1.0 \n",
+ "109804 19219.0 32.846611 1.0 \n",
+ "109805 19260.0 9.661584 1.0 \n",
+ "109806 19260.0 9.661584 1.0 \n",
+ "109807 19260.0 9.661584 1.0 \n",
+ "109808 19518.0 11.021622 1.0 \n",
+ "109809 19518.0 11.021622 1.0 \n",
+ "109810 19518.0 11.021622 1.0 \n",
+ "109811 19551.0 7.543967 1.0 \n",
+ "109812 19551.0 7.543967 1.0 \n",
+ "109813 19617.0 8.062763 1.0 \n",
+ "109814 19682.0 17.139938 1.0 \n",
+ "109815 19682.0 17.139938 1.0 \n",
+ "109816 19721.0 11.005083 1.0 \n",
+ "109817 19787.0 7.796933 1.0 \n",
+ "109818 19826.0 19.236219 1.0 \n",
+ "109819 19826.0 19.236219 1.0 \n",
+ "109820 19826.0 20.784391 0.0 \n",
+ "\n",
+ "[109821 rows x 27 columns]"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "matched_unmatched_tracks = pd.read_pickle('matched_8hittracks2.pkl')\n",
+ "matched_unmatched_tracks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#plt.figure()\n",
+ "#plt.hist(matched_unmatched_tracks['trackchi2'][matched_unmatched_tracks['matched'] == 1], label='matched', alpha=0.5, normed=True)\n",
+ "#plt.hist(matched_unmatched_tracks['trackchi2'][matched_unmatched_tracks['matched'] == 0], label='not matched', alpha=0.5, normed=True)\n",
+ "#plt.legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(109821, 8, 3)\n"
+ ]
+ }
+ ],
+ "source": [
+ "matched_unmatched_tracks = np.array(matched_unmatched_tracks)\n",
+ "matched_unmatched_tracks = matched_unmatched_tracks.astype('float32')\n",
+ "truth = matched_unmatched_tracks[:,-1]\n",
+ "chi2 = matched_unmatched_tracks[:,-2]\n",
+ "event_id = matched_unmatched_tracks[:,-3].astype('int')\n",
+ "tracks = scaler(reshapor(matched_unmatched_tracks[:,:-3]), scalerfunc = func, scalor= scalor)\n",
+ "\n",
+ "print(tracks.shape)\n",
+ "\n",
+ "#print(reshapor_inv(tset_matched).shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "array_len = truth.shape[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "track_with_chi = np.zeros((array_len, 8, 4))\n",
+ "track_with_chi[:,:,:3] += tracks[:,:,:]\n",
+ "\n",
+ "for track in range(array_len):\n",
+ " for t in range(8):\n",
+ " track_with_chi[track,t,3] = chi2[track]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "truth_and_ev_id = np.zeros((array_len,2))\n",
+ "\n",
+ "truth_and_ev_id[:,0] += truth[:]\n",
+ "truth_and_ev_id[:,1] += event_id[:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\sklearn\\model_selection\\_split.py:2026: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.\n",
+ " FutureWarning)\n"
+ ]
+ }
+ ],
+ "source": [
+ "X_train, X_test, Y_train, Y_test = skl.model_selection.train_test_split(track_with_chi, truth_and_ev_id, shuffle=False, train_size=0.8)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train_input = X_train[:,:4,:3]\n",
+ "X_test_input = X_test[:,:4,:3]\n",
+ "XY_train_proposed = X_train[:,4:,:]\n",
+ "XY_test_proposed = X_test[:,4:,:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filepath = \"trained_models/keras_RNN2.h5\"\n",
+ "model_4_to_4 = load_model(filepath)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "prediction_train = reshapor(model_4_to_4.predict(X_train_input[:,:,:]))\n",
+ "prediction_test = reshapor(model_4_to_4.predict(X_test_input[:,:,:]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "XY_train_proposed[:,:,:3] -= prediction_train[:,:,:]\n",
+ "XY_test_proposed[:,:,:3] -= prediction_test[:,:,:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "XY_test_proposed[0,0,:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train = XY_train_proposed\n",
+ "y_train = Y_train[:,0]\n",
+ "X_test = XY_test_proposed\n",
+ "y_test = Y_test[:,0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "print(X_train[1,:,:], y_train[1], X_test.shape, y_train.shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "lstm_1 (LSTM) (None, 4, 50) 11000 \n",
+ "_________________________________________________________________\n",
+ "batch_normalization_1 (Batch (None, 4, 50) 200 \n",
+ "_________________________________________________________________\n",
+ "lstm_2 (LSTM) (None, 4, 50) 20200 \n",
+ "_________________________________________________________________\n",
+ "batch_normalization_2 (Batch (None, 4, 50) 200 \n",
+ "_________________________________________________________________\n",
+ "lstm_3 (LSTM) (None, 50) 20200 \n",
+ "_________________________________________________________________\n",
+ "batch_normalization_3 (Batch (None, 50) 200 \n",
+ "_________________________________________________________________\n",
+ "dense_1 (Dense) (None, 100) 5100 \n",
+ "_________________________________________________________________\n",
+ "dense_2 (Dense) (None, 1) 101 \n",
+ "=================================================================\n",
+ "Total params: 57,201\n",
+ "Trainable params: 56,901\n",
+ "Non-trainable params: 300\n",
+ "_________________________________________________________________\n",
+ "None\n",
+ "Train on 87856 samples, validate on 21965 samples\n",
+ "Epoch 1/500\n"
+ ]
+ },
+ {
+ "ename": "TypeError",
+ "evalue": "Cannot interpret feed_dict key as Tensor: Tensor Tensor(\"lstm_1_input:0\", shape=(?, 4, 4), dtype=float32) is not an element of this graph.",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_run\u001b[1;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m 1079\u001b[0m subfeed_t = self.graph.as_graph_element(\n\u001b[1;32m-> 1080\u001b[1;33m subfeed, allow_tensor=True, allow_operation=False)\n\u001b[0m\u001b[0;32m 1081\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\u001b[0m in \u001b[0;36mas_graph_element\u001b[1;34m(self, obj, allow_tensor, allow_operation)\u001b[0m\n\u001b[0;32m 3477\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3478\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_as_graph_element_locked\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mallow_tensor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mallow_operation\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3479\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\u001b[0m in \u001b[0;36m_as_graph_element_locked\u001b[1;34m(self, obj, allow_tensor, allow_operation)\u001b[0m\n\u001b[0;32m 3556\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgraph\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3557\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Tensor %s is not an element of this graph.\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3558\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;31mValueError\u001b[0m: Tensor Tensor(\"lstm_1_input:0\", shape=(?, 4, 4), dtype=float32) is not an element of this graph.",
+ "\nDuring handling of the above exception, another exception occurred:\n",
+ "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
+ "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[0mmodelx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'binary_crossentropy'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'adam'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'accuracy'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 32\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodelx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 33\u001b[1;33m \u001b[0mmodelx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalidation_data\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m500\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m50\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[1;33m=\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mverbose\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 34\u001b[0m \u001b[0mmodelx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mload_model\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[1;31m# Final evaluation of the model\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\models.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[0;32m 961\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 962\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 963\u001b[1;33m validation_steps=validation_steps)\n\u001b[0m\u001b[0;32m 964\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 965\u001b[0m def evaluate(self, x=None, y=None,\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\engine\\training.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[0;32m 1703\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1704\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1705\u001b[1;33m validation_steps=validation_steps)\n\u001b[0m\u001b[0;32m 1706\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1707\u001b[0m def evaluate(self, x=None, y=None,\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\engine\\training.py\u001b[0m in \u001b[0;36m_fit_loop\u001b[1;34m(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[0;32m 1233\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtoarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1234\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1235\u001b[1;33m \u001b[0mouts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1236\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1237\u001b[0m \u001b[0mouts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, inputs)\u001b[0m\n\u001b[0;32m 2476\u001b[0m \u001b[0msession\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2477\u001b[0m updated = session.run(fetches=fetches, feed_dict=feed_dict,\n\u001b[1;32m-> 2478\u001b[1;33m **self.session_kwargs)\n\u001b[0m\u001b[0;32m 2479\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2480\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m 903\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 904\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[1;32m--> 905\u001b[1;33m run_metadata_ptr)\n\u001b[0m\u001b[0;32m 906\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 907\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_run\u001b[1;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m 1081\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1082\u001b[0m raise TypeError(\n\u001b[1;32m-> 1083\u001b[1;33m 'Cannot interpret feed_dict key as Tensor: ' + e.args[0])\n\u001b[0m\u001b[0;32m 1084\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1085\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msubfeed_val\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTensor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;31mTypeError\u001b[0m: Cannot interpret feed_dict key as Tensor: Tensor Tensor(\"lstm_1_input:0\", shape=(?, 4, 4), dtype=float32) is not an element of this graph."
+ ]
+ }
+ ],
+ "source": [
+ "# truncate and pad input sequences\n",
+ "\n",
+ "tf.reset_default_graph()\n",
+ "max_review_length = 4\n",
+ "filepath = \"trained_models/keras_model_classifier.h5\"\n",
+ "\n",
+ "callbacks = [\n",
+ " EarlyStopping(monitor='val_loss', patience=20, min_delta=0.0003),\n",
+ " ModelCheckpoint(filepath, monitor='val_loss', save_best_only=True),\n",
+ " History(),\n",
+ " #TensorBoard(log_dir= filepath[:-3] + \"/logs\", histogram_freq=1, batch_size=32)\n",
+ "]\n",
+ "\n",
+ "#\n",
+ "\n",
+ "# create the model\n",
+ "modelx = Sequential()\n",
+ "#model.add(Dense(12, input_shape=(4,4)))\n",
+ "modelx.add(LSTM(50, return_sequences=True, input_shape=(4,4), activation = 'relu'))\n",
+ "modelx.add(BatchNormalization())\n",
+ "modelx.add(LSTM(50, return_sequences=True, activation = 'relu'))\n",
+ "modelx.add(BatchNormalization())\n",
+ "modelx.add(LSTM(50, return_sequences=False, activation = 'relu'))\n",
+ "modelx.add(BatchNormalization())\n",
+ "#model.add(LSTM(40, return_sequences=True, activation = 'relu')) \n",
+ "#model.add(Dropout(0.5))\n",
+ "#model.add(LSTM(4, activation = 'relu')) \n",
+ "#model.add(BatchNormalization())\n",
+ "modelx.add(Dense(100, activation='relu'))\n",
+ "modelx.add(Dense(1, activation='sigmoid'))\n",
+ "modelx.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
+ "print(modelx.summary())\n",
+ "modelx.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=500, batch_size=50, callbacks= callbacks, verbose = 1)\n",
+ "modelx = load_model(filepath)\n",
+ "# Final evaluation of the model\n",
+ "scores = modelx.evaluate(X_test, y_test, verbose=0)\n",
+ "print(\"Accuracy: %.2f%%\" % (scores[1]*100))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'reshapor_inv' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mX_train\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mreshapor_inv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mX_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mreshapor_inv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;31mNameError\u001b[0m: name 'reshapor_inv' is not defined"
+ ]
+ }
+ ],
+ "source": [
+ "X_train = reshapor_inv(X_train)\n",
+ "X_test = reshapor_inv(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# fit model no training data\n",
+ "modelx = XGBClassifier(max_depth=3, n_estimators=100, learning_rate=0.05).fit(X_train, y_train, verbose = 1)\n",
+ "\n",
+ "predictions = modelx.predict_proba(X_test)\n",
+ "with open(\"trained_models/XGB_Classifier.xgb\" , \"wb\" ) as f:\n",
+ " pkl.dump(modelx , f )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_true = predictions[:, 1]\n",
+ "predictions_false = predictions[:, 0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cut = 0.5\n",
+ "predictions_hard = (predictions_true > cut).astype(int)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "n_bins = 20\n",
+ "\n",
+ "plt.figure()\n",
+ "n, bins, patches = plt.hist(predictions_true[y_test == 1], bins=20, alpha=0.5, normed=True)\n",
+ "plt.hist(predictions_true[y_test == 0], bins=bins, alpha=0.5, normed=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fpr, tpr, _ = skl.metrics.roc_curve(y_test, predictions_true, pos_label=1)\n",
+ "roc_auc = skl.metrics.roc_auc_score(y_true=y_test, y_score=predictions_true)\n",
+ "print(\"ROC AUC:\", roc_auc)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "plt.figure()\n",
+ "plt.plot(fpr, tpr)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "skl.metrics.accuracy_score(y_true=y_test, y_pred=predictions_hard)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/1_to_1_multi_layer_roc_auc.ipynb b/1_to_1_multi_layer_roc_auc.ipynb
new file mode 100644
index 0000000..259b2af
--- /dev/null
+++ b/1_to_1_multi_layer_roc_auc.ipynb
@@ -0,0 +1,2965 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Import all packages\n",
+ "***"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
+ " from ._conv import register_converters as _register_converters\n",
+ "Using TensorFlow backend.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib as mpl\n",
+ "import random\n",
+ "import math\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import tensorflow as tf\n",
+ "from tensorflow.python.framework import ops\n",
+ "from sklearn import preprocessing\n",
+ "import pickle as pkl\n",
+ "from pathlib import Path\n",
+ "from keras.datasets import imdb\n",
+ "from keras.models import Sequential\n",
+ "from keras.layers import Dense\n",
+ "from keras.layers import LSTM\n",
+ "from keras.layers import GRU\n",
+ "from keras.layers import Dropout, BatchNormalization\n",
+ "from keras.layers import ConvLSTM2D\n",
+ "from keras.layers import Conv1D\n",
+ "#from keras.layers.convolutional import Conv1D\n",
+ "#from keras.layers.convolutional import MaxPooling1D\n",
+ "from keras.layers.embeddings import Embedding\n",
+ "from keras.preprocessing import sequence\n",
+ "from keras.callbacks import History\n",
+ "from keras.callbacks import EarlyStopping\n",
+ "from keras.callbacks import ModelCheckpoint\n",
+ "from keras.callbacks import TensorBoard\n",
+ "from keras.models import load_model\n",
+ "\n",
+ "import xgboost as xgb\n",
+ "from xgboost import XGBClassifier\n",
+ "from xgboost import plot_tree\n",
+ "from sklearn.metrics import accuracy_score\n",
+ "import graphviz\n",
+ "\n",
+ "import sklearn as skl\n",
+ "\n",
+ "#import seaborn as sns"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Preprocessing of the matched 8-hit tracks\n",
+ "\n",
+ "***\n",
+ "\n",
+ "## Import the dataset of the matched 8-hit tracks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " x1 | \n",
+ " y1 | \n",
+ " z1 | \n",
+ " x2 | \n",
+ " y2 | \n",
+ " z2 | \n",
+ " x3 | \n",
+ " y3 | \n",
+ " z3 | \n",
+ " x4 | \n",
+ " ... | \n",
+ " z5 | \n",
+ " x6 | \n",
+ " y6 | \n",
+ " z6 | \n",
+ " x7 | \n",
+ " y7 | \n",
+ " z7 | \n",
+ " x8 | \n",
+ " y8 | \n",
+ " z8 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " -2.248582 | \n",
+ " 23.380732 | \n",
+ " -6.040000 | \n",
+ " -6.489999 | \n",
+ " 28.598572 | \n",
+ " -5.640000 | \n",
+ " -21.724771 | \n",
+ " 67.052704 | \n",
+ " -3.240000 | \n",
+ " -22.225971 | \n",
+ " ... | \n",
+ " 7.240000 | \n",
+ " 70.390724 | \n",
+ " 0.190000 | \n",
+ " 7.559999 | \n",
+ " 28.802656 | \n",
+ " 3.901462 | \n",
+ " 6.040000 | \n",
+ " 21.421392 | \n",
+ " 6.978845 | \n",
+ " 5.640000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -3.720001 | \n",
+ " 69.040436 | \n",
+ " 14.306461 | \n",
+ " -4.040000 | \n",
+ " 26.880571 | \n",
+ " -9.817033 | \n",
+ " -4.840000 | \n",
+ " 19.684010 | \n",
+ " -11.173258 | \n",
+ " -5.000000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -3.720001 | \n",
+ " 69.040436 | \n",
+ " 14.306461 | \n",
+ " -4.040000 | \n",
+ " 26.880571 | \n",
+ " -9.817033 | \n",
+ " -4.840000 | \n",
+ " 19.684010 | \n",
+ " -11.173258 | \n",
+ " -5.000000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 20.043732 | \n",
+ " 10.304811 | \n",
+ " -22.680000 | \n",
+ " 26.009144 | \n",
+ " 12.499014 | \n",
+ " -22.440001 | \n",
+ " 68.274330 | \n",
+ " 17.165602 | \n",
+ " -21.240000 | \n",
+ " 80.994446 | \n",
+ " ... | \n",
+ " -11.480000 | \n",
+ " -38.564201 | \n",
+ " -59.015156 | \n",
+ " -10.840000 | \n",
+ " -21.332224 | \n",
+ " -19.851011 | \n",
+ " -10.440001 | \n",
+ " -17.870090 | \n",
+ " -15.552447 | \n",
+ " -10.440001 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " -6.313652 | \n",
+ " 21.696924 | \n",
+ " 16.039999 | \n",
+ " -4.489999 | \n",
+ " 28.598572 | \n",
+ " 15.639999 | \n",
+ " 15.484889 | \n",
+ " 68.724678 | \n",
+ " 14.120000 | \n",
+ " 23.103405 | \n",
+ " ... | \n",
+ " 28.119999 | \n",
+ " 6.350000 | \n",
+ " -70.390724 | \n",
+ " 28.520000 | \n",
+ " -7.870180 | \n",
+ " -29.631758 | \n",
+ " 31.000000 | \n",
+ " -9.177679 | \n",
+ " -20.510605 | \n",
+ " 31.799999 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -48.599998 | \n",
+ " -36.693588 | \n",
+ " -60.095158 | \n",
+ " -48.759998 | \n",
+ " -19.520025 | \n",
+ " -21.167650 | \n",
+ " -49.799999 | \n",
+ " -17.012880 | \n",
+ " -17.621937 | \n",
+ " -49.880001 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 42.439999 | \n",
+ " 51.110191 | \n",
+ " 48.437328 | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 42.439999 | \n",
+ " 51.110191 | \n",
+ " 48.437328 | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 42.439999 | \n",
+ " 51.110191 | \n",
+ " 48.437328 | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " -7.052755 | \n",
+ " 21.390778 | \n",
+ " -33.320000 | \n",
+ " -0.409999 | \n",
+ " 28.598572 | \n",
+ " -33.639999 | \n",
+ " 56.945152 | \n",
+ " 42.149548 | \n",
+ " -38.520000 | \n",
+ " 74.868416 | \n",
+ " ... | \n",
+ " -52.520000 | \n",
+ " 6.430000 | \n",
+ " -70.390724 | \n",
+ " -52.440002 | \n",
+ " -17.448942 | \n",
+ " -22.672380 | \n",
+ " -49.720001 | \n",
+ " -17.349640 | \n",
+ " -16.808924 | \n",
+ " -49.320000 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " -7.052755 | \n",
+ " 21.390778 | \n",
+ " -33.320000 | \n",
+ " -0.409999 | \n",
+ " 28.598572 | \n",
+ " -33.639999 | \n",
+ " 56.945152 | \n",
+ " 42.149548 | \n",
+ " -38.520000 | \n",
+ " 74.868416 | \n",
+ " ... | \n",
+ " -52.520000 | \n",
+ " 6.430000 | \n",
+ " -70.390724 | \n",
+ " -52.440002 | \n",
+ " -17.448942 | \n",
+ " -22.672380 | \n",
+ " -49.720001 | \n",
+ " -17.349640 | \n",
+ " -16.808924 | \n",
+ " -49.320000 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 19.860044 | \n",
+ " 10.748274 | \n",
+ " -47.400002 | \n",
+ " 24.797796 | \n",
+ " 16.227154 | \n",
+ " -47.240002 | \n",
+ " 56.945152 | \n",
+ " 42.149548 | \n",
+ " -46.840000 | \n",
+ " 67.211060 | \n",
+ " ... | \n",
+ " -42.919998 | \n",
+ " -9.766608 | \n",
+ " -70.256882 | \n",
+ " -42.760002 | \n",
+ " -1.830000 | \n",
+ " -28.598572 | \n",
+ " -41.239998 | \n",
+ " -0.086704 | \n",
+ " -24.276211 | \n",
+ " -41.000000 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " -19.890659 | \n",
+ " -10.674363 | \n",
+ " 24.760000 | \n",
+ " -25.242781 | \n",
+ " -14.857634 | \n",
+ " 24.200001 | \n",
+ " -62.665154 | \n",
+ " -32.242214 | \n",
+ " 20.760000 | \n",
+ " -74.660149 | \n",
+ " ... | \n",
+ " -13.240000 | \n",
+ " 17.184917 | \n",
+ " 68.269157 | \n",
+ " -14.280001 | \n",
+ " 9.099886 | \n",
+ " 28.738325 | \n",
+ " -19.639999 | \n",
+ " 5.851712 | \n",
+ " 21.888266 | \n",
+ " -20.680000 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " -19.890659 | \n",
+ " -10.674363 | \n",
+ " 24.760000 | \n",
+ " -25.242781 | \n",
+ " -14.857634 | \n",
+ " 24.200001 | \n",
+ " -62.665154 | \n",
+ " -32.242214 | \n",
+ " 20.760000 | \n",
+ " -74.660149 | \n",
+ " ... | \n",
+ " -13.240000 | \n",
+ " 17.184917 | \n",
+ " 68.269157 | \n",
+ " -14.280001 | \n",
+ " 9.099886 | \n",
+ " 28.738325 | \n",
+ " -19.639999 | \n",
+ " 5.851712 | \n",
+ " 21.888266 | \n",
+ " -20.680000 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " -19.890659 | \n",
+ " -10.674363 | \n",
+ " 24.760000 | \n",
+ " -25.242781 | \n",
+ " -14.857634 | \n",
+ " 24.200001 | \n",
+ " -62.665154 | \n",
+ " -32.242214 | \n",
+ " 20.760000 | \n",
+ " -74.660149 | \n",
+ " ... | \n",
+ " -13.240000 | \n",
+ " 17.184917 | \n",
+ " 68.269157 | \n",
+ " -14.280001 | \n",
+ " 9.099886 | \n",
+ " 28.738325 | \n",
+ " -19.639999 | \n",
+ " 5.851712 | \n",
+ " 21.888266 | \n",
+ " -20.680000 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " -19.890659 | \n",
+ " -10.674363 | \n",
+ " 24.760000 | \n",
+ " -25.242781 | \n",
+ " -14.857634 | \n",
+ " 24.200001 | \n",
+ " -62.665154 | \n",
+ " -32.242214 | \n",
+ " 20.760000 | \n",
+ " -74.660149 | \n",
+ " ... | \n",
+ " -13.240000 | \n",
+ " 17.184917 | \n",
+ " 68.269157 | \n",
+ " -14.280001 | \n",
+ " 9.099886 | \n",
+ " 28.738325 | \n",
+ " -19.639999 | \n",
+ " 5.851712 | \n",
+ " 21.888266 | \n",
+ " -20.680000 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " -19.890659 | \n",
+ " -10.674363 | \n",
+ " 24.760000 | \n",
+ " -25.242781 | \n",
+ " -14.857634 | \n",
+ " 24.200001 | \n",
+ " -62.665154 | \n",
+ " -32.242214 | \n",
+ " 20.760000 | \n",
+ " -74.660149 | \n",
+ " ... | \n",
+ " -13.240000 | \n",
+ " 17.184917 | \n",
+ " 68.269157 | \n",
+ " -14.280001 | \n",
+ " 9.099886 | \n",
+ " 28.738325 | \n",
+ " -19.639999 | \n",
+ " 5.851712 | \n",
+ " 21.888266 | \n",
+ " -20.680000 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " -19.890659 | \n",
+ " -10.674363 | \n",
+ " 24.760000 | \n",
+ " -25.242781 | \n",
+ " -14.857634 | \n",
+ " 24.200001 | \n",
+ " -62.665154 | \n",
+ " -32.242214 | \n",
+ " 20.760000 | \n",
+ " -74.660149 | \n",
+ " ... | \n",
+ " -13.240000 | \n",
+ " 17.184917 | \n",
+ " 68.269157 | \n",
+ " -14.280001 | \n",
+ " 9.099886 | \n",
+ " 28.738325 | \n",
+ " -19.639999 | \n",
+ " 5.851712 | \n",
+ " 21.888266 | \n",
+ " -20.680000 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " -8.882037 | \n",
+ " -20.633064 | \n",
+ " -30.040001 | \n",
+ " -12.983168 | \n",
+ " -25.916956 | \n",
+ " -30.200001 | \n",
+ " -47.546371 | \n",
+ " -52.001148 | \n",
+ " -32.360001 | \n",
+ " -60.527248 | \n",
+ " ... | \n",
+ " -44.919998 | \n",
+ " 1.410000 | \n",
+ " 70.390724 | \n",
+ " -45.480000 | \n",
+ " 11.365134 | \n",
+ " 27.092525 | \n",
+ " -45.320000 | \n",
+ " 10.803707 | \n",
+ " 19.837084 | \n",
+ " -44.840000 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " -21.115246 | \n",
+ " -7.717949 | \n",
+ " -24.680000 | \n",
+ " -26.750784 | \n",
+ " -10.216477 | \n",
+ " -24.600000 | \n",
+ " -67.922340 | \n",
+ " -18.479261 | \n",
+ " -24.760000 | \n",
+ " -80.264580 | \n",
+ " ... | \n",
+ " -10.680000 | \n",
+ " 40.088406 | \n",
+ " 58.135159 | \n",
+ " -10.440001 | \n",
+ " 19.973076 | \n",
+ " 20.838491 | \n",
+ " -9.880000 | \n",
+ " 17.104723 | \n",
+ " 17.400206 | \n",
+ " -9.800000 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 15.404627 | \n",
+ " -17.931320 | \n",
+ " -36.439999 | \n",
+ " 18.888992 | \n",
+ " -21.626123 | \n",
+ " -36.119999 | \n",
+ " 40.001804 | \n",
+ " -58.185154 | \n",
+ " -33.080002 | \n",
+ " 43.343781 | \n",
+ " ... | \n",
+ " -14.120001 | \n",
+ " -70.443237 | \n",
+ " 9.071142 | \n",
+ " -13.960001 | \n",
+ " -28.141359 | \n",
+ " 5.936723 | \n",
+ " -13.960000 | \n",
+ " -22.592403 | \n",
+ " 4.151774 | \n",
+ " -13.880000 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " -22.247990 | \n",
+ " -4.983265 | \n",
+ " -10.280001 | \n",
+ " -30.069626 | \n",
+ " 0.002129 | \n",
+ " -9.800000 | \n",
+ " -63.815155 | \n",
+ " 30.250359 | \n",
+ " -7.560000 | \n",
+ " -71.631638 | \n",
+ " ... | \n",
+ " 40.919998 | \n",
+ " 63.415157 | \n",
+ " -30.943180 | \n",
+ " 41.799999 | \n",
+ " 16.300138 | \n",
+ " -23.507036 | \n",
+ " 44.360001 | \n",
+ " 8.309232 | \n",
+ " -20.870329 | \n",
+ " 44.840000 | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " -22.247990 | \n",
+ " -4.983265 | \n",
+ " -10.280001 | \n",
+ " -30.069626 | \n",
+ " 0.002129 | \n",
+ " -9.800000 | \n",
+ " -63.815155 | \n",
+ " 30.250359 | \n",
+ " -7.560000 | \n",
+ " -71.631638 | \n",
+ " ... | \n",
+ " 40.919998 | \n",
+ " 63.415157 | \n",
+ " -30.943180 | \n",
+ " 41.799999 | \n",
+ " 16.300138 | \n",
+ " -23.507036 | \n",
+ " 44.360001 | \n",
+ " 8.309232 | \n",
+ " -20.870329 | \n",
+ " 44.840000 | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " -22.247990 | \n",
+ " -4.983265 | \n",
+ " -10.280001 | \n",
+ " -30.069626 | \n",
+ " 0.002129 | \n",
+ " -9.800000 | \n",
+ " -63.815155 | \n",
+ " 30.250359 | \n",
+ " -7.560000 | \n",
+ " -71.631638 | \n",
+ " ... | \n",
+ " 40.919998 | \n",
+ " 63.415157 | \n",
+ " -30.943180 | \n",
+ " 41.799999 | \n",
+ " 16.300138 | \n",
+ " -23.507036 | \n",
+ " 44.360001 | \n",
+ " 8.309232 | \n",
+ " -20.870329 | \n",
+ " 44.840000 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " -19.928926 | \n",
+ " 10.581976 | \n",
+ " -15.559999 | \n",
+ " -26.213095 | \n",
+ " 11.871315 | \n",
+ " -15.480000 | \n",
+ " -59.055157 | \n",
+ " 38.494919 | \n",
+ " -15.800000 | \n",
+ " -63.856682 | \n",
+ " ... | \n",
+ " -4.040000 | \n",
+ " 45.962456 | \n",
+ " 53.585068 | \n",
+ " -3.480000 | \n",
+ " 23.833664 | \n",
+ " 19.194452 | \n",
+ " -2.360001 | \n",
+ " 17.808861 | \n",
+ " 15.700268 | \n",
+ " -2.200001 | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " 8.364664 | \n",
+ " 20.847366 | \n",
+ " -11.000000 | \n",
+ " 6.710001 | \n",
+ " 28.598572 | \n",
+ " -10.920000 | \n",
+ " 6.210000 | \n",
+ " 70.390724 | \n",
+ " -10.760000 | \n",
+ " 8.752466 | \n",
+ " ... | \n",
+ " -8.680000 | \n",
+ " 56.470062 | \n",
+ " -43.077457 | \n",
+ " -8.600000 | \n",
+ " 25.520897 | \n",
+ " -14.001682 | \n",
+ " -7.320001 | \n",
+ " 21.153515 | \n",
+ " -7.625561 | \n",
+ " -7.240001 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " -15.256805 | \n",
+ " 17.992550 | \n",
+ " 4.200000 | \n",
+ " -22.642832 | \n",
+ " 18.898800 | \n",
+ " 4.440000 | \n",
+ " -63.615158 | \n",
+ " 30.596769 | \n",
+ " 5.080000 | \n",
+ " -74.165520 | \n",
+ " ... | \n",
+ " -2.760000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -2.840000 | \n",
+ " 23.932549 | \n",
+ " 18.890114 | \n",
+ " -3.960001 | \n",
+ " 16.798576 | \n",
+ " 18.139311 | \n",
+ " -4.200001 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " -3.578969 | \n",
+ " 22.829668 | \n",
+ " 28.119999 | \n",
+ " -5.610000 | \n",
+ " 28.598572 | \n",
+ " 28.360001 | \n",
+ " -9.949999 | \n",
+ " 70.390724 | \n",
+ " 29.559999 | \n",
+ " -8.190001 | \n",
+ " ... | \n",
+ " 47.639999 | \n",
+ " 61.495155 | \n",
+ " -34.268715 | \n",
+ " 48.119999 | \n",
+ " 25.545618 | \n",
+ " -13.925597 | \n",
+ " 49.320000 | \n",
+ " 20.479992 | \n",
+ " -9.251589 | \n",
+ " 49.400002 | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " -3.578969 | \n",
+ " 22.829668 | \n",
+ " 28.119999 | \n",
+ " -5.610000 | \n",
+ " 28.598572 | \n",
+ " 28.360001 | \n",
+ " -9.949999 | \n",
+ " 70.390724 | \n",
+ " 29.559999 | \n",
+ " -8.190001 | \n",
+ " ... | \n",
+ " 47.639999 | \n",
+ " 61.495155 | \n",
+ " -34.268715 | \n",
+ " 48.119999 | \n",
+ " 25.545618 | \n",
+ " -13.925597 | \n",
+ " 49.320000 | \n",
+ " 20.479992 | \n",
+ " -9.251589 | \n",
+ " 49.400002 | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " -22.010725 | \n",
+ " 5.556071 | \n",
+ " 20.520000 | \n",
+ " -27.004177 | \n",
+ " 9.436610 | \n",
+ " 20.920000 | \n",
+ " -55.734673 | \n",
+ " 43.812851 | \n",
+ " 23.799999 | \n",
+ " -61.412601 | \n",
+ " ... | \n",
+ " 55.799999 | \n",
+ " 68.496918 | \n",
+ " -16.334904 | \n",
+ " 56.439999 | \n",
+ " 25.174797 | \n",
+ " -15.066865 | \n",
+ " 58.599998 | \n",
+ " 18.704340 | \n",
+ " -13.538390 | \n",
+ " 58.919998 | \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",
+ " 46866 | \n",
+ " 1.805120 | \n",
+ " -23.564421 | \n",
+ " -22.040001 | \n",
+ " 3.049999 | \n",
+ " -28.598572 | \n",
+ " -22.040001 | \n",
+ " 4.270000 | \n",
+ " -70.390724 | \n",
+ " -22.600000 | \n",
+ " 2.190000 | \n",
+ " ... | \n",
+ " -33.799999 | \n",
+ " -50.530365 | \n",
+ " 49.017155 | \n",
+ " -34.040001 | \n",
+ " -18.888992 | \n",
+ " 21.626123 | \n",
+ " -35.000000 | \n",
+ " -15.848089 | \n",
+ " 17.747631 | \n",
+ " -35.080002 | \n",
+ "
\n",
+ " \n",
+ " 46867 | \n",
+ " -24.000679 | \n",
+ " 0.751897 | \n",
+ " -38.439999 | \n",
+ " -29.674084 | \n",
+ " 1.219481 | \n",
+ " -38.360001 | \n",
+ " -67.979279 | \n",
+ " 18.266756 | \n",
+ " -38.119999 | \n",
+ " -77.220062 | \n",
+ " ... | \n",
+ " -32.919998 | \n",
+ " 51.619308 | \n",
+ " 47.928211 | \n",
+ " -32.520000 | \n",
+ " 26.182192 | \n",
+ " 11.966422 | \n",
+ " -28.760000 | \n",
+ " 20.870329 | \n",
+ " 8.309232 | \n",
+ " -28.119999 | \n",
+ "
\n",
+ " \n",
+ " 46868 | \n",
+ " -24.000679 | \n",
+ " 0.751897 | \n",
+ " -38.439999 | \n",
+ " -29.674084 | \n",
+ " 1.219481 | \n",
+ " -38.360001 | \n",
+ " -67.979279 | \n",
+ " 18.266756 | \n",
+ " -38.119999 | \n",
+ " -77.220062 | \n",
+ " ... | \n",
+ " -32.919998 | \n",
+ " 51.619308 | \n",
+ " 47.928211 | \n",
+ " -32.520000 | \n",
+ " 26.182192 | \n",
+ " 11.966422 | \n",
+ " -28.760000 | \n",
+ " 20.870329 | \n",
+ " 8.309232 | \n",
+ " -28.119999 | \n",
+ "
\n",
+ " \n",
+ " 46869 | \n",
+ " -24.000679 | \n",
+ " 0.751897 | \n",
+ " -38.439999 | \n",
+ " -29.674084 | \n",
+ " 1.219481 | \n",
+ " -38.360001 | \n",
+ " -67.979279 | \n",
+ " 18.266756 | \n",
+ " -38.119999 | \n",
+ " -77.220062 | \n",
+ " ... | \n",
+ " -32.919998 | \n",
+ " 51.619308 | \n",
+ " 47.928211 | \n",
+ " -32.520000 | \n",
+ " 26.182192 | \n",
+ " 11.966422 | \n",
+ " -28.760000 | \n",
+ " 20.870329 | \n",
+ " 8.309232 | \n",
+ " -28.119999 | \n",
+ "
\n",
+ " \n",
+ " 46870 | \n",
+ " -24.000679 | \n",
+ " 0.751897 | \n",
+ " -38.439999 | \n",
+ " -29.674084 | \n",
+ " 1.219481 | \n",
+ " -38.360001 | \n",
+ " -67.979279 | \n",
+ " 18.266756 | \n",
+ " -38.119999 | \n",
+ " -77.220062 | \n",
+ " ... | \n",
+ " -32.919998 | \n",
+ " 51.619308 | \n",
+ " 47.928211 | \n",
+ " -32.520000 | \n",
+ " 26.182192 | \n",
+ " 11.966422 | \n",
+ " -28.760000 | \n",
+ " 20.870329 | \n",
+ " 8.309232 | \n",
+ " -28.119999 | \n",
+ "
\n",
+ " \n",
+ " 46871 | \n",
+ " 22.676594 | \n",
+ " 3.948521 | \n",
+ " -38.840000 | \n",
+ " 28.926264 | \n",
+ " 3.521039 | \n",
+ " -38.680000 | \n",
+ " 70.390724 | \n",
+ " -5.410000 | \n",
+ " -37.799999 | \n",
+ " 82.075897 | \n",
+ " ... | \n",
+ " -21.400000 | \n",
+ " -67.839516 | \n",
+ " -18.788357 | \n",
+ " -21.080000 | \n",
+ " -28.827377 | \n",
+ " -3.825377 | \n",
+ " -20.120001 | \n",
+ " -23.258274 | \n",
+ " -2.544224 | \n",
+ " -19.959999 | \n",
+ "
\n",
+ " \n",
+ " 46872 | \n",
+ " 22.676594 | \n",
+ " 3.948521 | \n",
+ " -38.840000 | \n",
+ " 28.926264 | \n",
+ " 3.521039 | \n",
+ " -38.680000 | \n",
+ " 70.390724 | \n",
+ " -5.410000 | \n",
+ " -37.799999 | \n",
+ " 82.075897 | \n",
+ " ... | \n",
+ " -21.400000 | \n",
+ " -67.839516 | \n",
+ " -18.788357 | \n",
+ " -21.080000 | \n",
+ " -28.827377 | \n",
+ " -3.825377 | \n",
+ " -20.120001 | \n",
+ " -23.258274 | \n",
+ " -2.544224 | \n",
+ " -19.959999 | \n",
+ "
\n",
+ " \n",
+ " 46873 | \n",
+ " 22.676594 | \n",
+ " 3.948521 | \n",
+ " -38.840000 | \n",
+ " 28.926264 | \n",
+ " 3.521039 | \n",
+ " -38.680000 | \n",
+ " 70.390724 | \n",
+ " -5.410000 | \n",
+ " -37.799999 | \n",
+ " 82.075897 | \n",
+ " ... | \n",
+ " -21.400000 | \n",
+ " -67.839516 | \n",
+ " -18.788357 | \n",
+ " -21.080000 | \n",
+ " -28.827377 | \n",
+ " -3.825377 | \n",
+ " -20.120001 | \n",
+ " -23.258274 | \n",
+ " -2.544224 | \n",
+ " -19.959999 | \n",
+ "
\n",
+ " \n",
+ " 46874 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.480000 | \n",
+ " 16.566727 | \n",
+ " 68.434799 | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ "
\n",
+ " \n",
+ " 46875 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.480000 | \n",
+ " 16.566727 | \n",
+ " 68.434799 | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ "
\n",
+ " \n",
+ " 46876 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.480000 | \n",
+ " 16.566727 | \n",
+ " 68.434799 | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ "
\n",
+ " \n",
+ " 46877 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 45.000000 | \n",
+ " -66.964706 | \n",
+ " 22.053185 | \n",
+ " 45.160000 | \n",
+ " -26.460308 | \n",
+ " 11.110470 | \n",
+ " 45.720001 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " 45.720001 | \n",
+ "
\n",
+ " \n",
+ " 46878 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 17.000000 | \n",
+ " 54.037613 | \n",
+ " -45.509907 | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ "
\n",
+ " \n",
+ " 46879 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 17.000000 | \n",
+ " 54.037613 | \n",
+ " -45.509907 | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ "
\n",
+ " \n",
+ " 46880 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 17.000000 | \n",
+ " 54.037613 | \n",
+ " -45.509907 | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ "
\n",
+ " \n",
+ " 46881 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 17.000000 | \n",
+ " 54.037613 | \n",
+ " -45.509907 | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ "
\n",
+ " \n",
+ " 46882 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 17.000000 | \n",
+ " 54.037613 | \n",
+ " -45.509907 | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ "
\n",
+ " \n",
+ " 46883 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 17.000000 | \n",
+ " 54.037613 | \n",
+ " -45.509907 | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ "
\n",
+ " \n",
+ " 46884 | \n",
+ " -8.882037 | \n",
+ " -20.633064 | \n",
+ " -6.040000 | \n",
+ " -6.230000 | \n",
+ " -28.598572 | \n",
+ " -5.800000 | \n",
+ " -1.250000 | \n",
+ " -70.390724 | \n",
+ " -4.680000 | \n",
+ " -2.370000 | \n",
+ " ... | \n",
+ " -11.400001 | \n",
+ " -55.791237 | \n",
+ " 43.756279 | \n",
+ " -11.480000 | \n",
+ " -25.941158 | \n",
+ " 12.708245 | \n",
+ " -10.840000 | \n",
+ " -21.857651 | \n",
+ " 5.925623 | \n",
+ " -10.520000 | \n",
+ "
\n",
+ " \n",
+ " 46885 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.040001 | \n",
+ " -63.455158 | \n",
+ " 30.873898 | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ "
\n",
+ " \n",
+ " 46886 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.040001 | \n",
+ " -63.455158 | \n",
+ " 30.873898 | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ "
\n",
+ " \n",
+ " 46887 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.040001 | \n",
+ " -63.455158 | \n",
+ " 30.873898 | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ "
\n",
+ " \n",
+ " 46888 | \n",
+ " -19.921274 | \n",
+ " -10.600453 | \n",
+ " 19.559999 | \n",
+ " -24.649467 | \n",
+ " -16.683662 | \n",
+ " 19.400000 | \n",
+ " -56.025154 | \n",
+ " -43.743034 | \n",
+ " 18.840000 | \n",
+ " -65.964081 | \n",
+ " ... | \n",
+ " 10.120000 | \n",
+ " 6.370000 | \n",
+ " 70.390724 | \n",
+ " 9.959999 | \n",
+ " -0.570000 | \n",
+ " 28.598572 | \n",
+ " 8.599999 | \n",
+ " -2.470313 | \n",
+ " 23.288887 | \n",
+ " 8.360000 | \n",
+ "
\n",
+ " \n",
+ " 46889 | \n",
+ " -19.921274 | \n",
+ " -10.600453 | \n",
+ " 19.559999 | \n",
+ " -24.649467 | \n",
+ " -16.683662 | \n",
+ " 19.400000 | \n",
+ " -56.025154 | \n",
+ " -43.743034 | \n",
+ " 18.840000 | \n",
+ " -65.964081 | \n",
+ " ... | \n",
+ " 10.120000 | \n",
+ " 6.370000 | \n",
+ " 70.390724 | \n",
+ " 9.959999 | \n",
+ " -0.570000 | \n",
+ " 28.598572 | \n",
+ " 8.599999 | \n",
+ " -2.470313 | \n",
+ " 23.288887 | \n",
+ " 8.360000 | \n",
+ "
\n",
+ " \n",
+ " 46890 | \n",
+ " 23.174084 | \n",
+ " -2.747478 | \n",
+ " 11.320000 | \n",
+ " 27.646933 | \n",
+ " -7.458413 | \n",
+ " 11.559999 | \n",
+ " 53.698204 | \n",
+ " -45.849316 | \n",
+ " 13.320000 | \n",
+ " 58.983761 | \n",
+ " ... | \n",
+ " 40.119999 | \n",
+ " -53.245655 | \n",
+ " 46.301865 | \n",
+ " 40.439999 | \n",
+ " -11.704922 | \n",
+ " 26.845655 | \n",
+ " 41.320000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " 41.480000 | \n",
+ "
\n",
+ " \n",
+ " 46891 | \n",
+ " 23.174084 | \n",
+ " -2.747478 | \n",
+ " 11.320000 | \n",
+ " 27.646933 | \n",
+ " -7.458413 | \n",
+ " 11.559999 | \n",
+ " 53.698204 | \n",
+ " -45.849316 | \n",
+ " 13.320000 | \n",
+ " 58.983761 | \n",
+ " ... | \n",
+ " 40.119999 | \n",
+ " -53.245655 | \n",
+ " 46.301865 | \n",
+ " 40.439999 | \n",
+ " -11.704922 | \n",
+ " 26.845655 | \n",
+ " 41.320000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " 41.480000 | \n",
+ "
\n",
+ " \n",
+ " 46892 | \n",
+ " -12.374302 | \n",
+ " 19.186522 | \n",
+ " -29.720001 | \n",
+ " -16.429581 | \n",
+ " 23.412991 | \n",
+ " -29.799999 | \n",
+ " -33.766418 | \n",
+ " 61.785152 | \n",
+ " -30.760000 | \n",
+ " -34.045780 | \n",
+ " ... | \n",
+ " -44.919998 | \n",
+ " 70.390724 | \n",
+ " 2.510000 | \n",
+ " -45.639999 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -48.040001 | \n",
+ " 23.847605 | \n",
+ " -1.121449 | \n",
+ " -48.279999 | \n",
+ "
\n",
+ " \n",
+ " 46893 | \n",
+ " -20.939211 | \n",
+ " 8.142934 | \n",
+ " -22.440001 | \n",
+ " -26.410866 | \n",
+ " 11.262639 | \n",
+ " -22.760000 | \n",
+ " -59.615158 | \n",
+ " 37.524971 | \n",
+ " -24.840000 | \n",
+ " -67.946777 | \n",
+ " ... | \n",
+ " -55.799999 | \n",
+ " 69.242310 | \n",
+ " -13.553038 | \n",
+ " -56.279999 | \n",
+ " 26.410866 | \n",
+ " -11.262639 | \n",
+ " -57.720001 | \n",
+ " 20.173845 | \n",
+ " -9.990692 | \n",
+ " -57.959999 | \n",
+ "
\n",
+ " \n",
+ " 46894 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -25.240002 | \n",
+ " -53.698204 | \n",
+ " 45.849316 | \n",
+ " -25.080000 | \n",
+ " -20.053978 | \n",
+ " 20.779713 | \n",
+ " -25.560001 | \n",
+ " -16.661102 | \n",
+ " 17.410870 | \n",
+ " -25.560001 | \n",
+ "
\n",
+ " \n",
+ " 46895 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -25.240002 | \n",
+ " -53.698204 | \n",
+ " 45.849316 | \n",
+ " -25.080000 | \n",
+ " -20.053978 | \n",
+ " 20.779713 | \n",
+ " -25.560001 | \n",
+ " -16.661102 | \n",
+ " 17.410870 | \n",
+ " -25.560001 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
46896 rows × 24 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " x1 y1 z1 x2 y2 z2 \\\n",
+ "0 -2.248582 23.380732 -6.040000 -6.489999 28.598572 -5.640000 \n",
+ "1 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "2 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "3 20.043732 10.304811 -22.680000 26.009144 12.499014 -22.440001 \n",
+ "4 -6.313652 21.696924 16.039999 -4.489999 28.598572 15.639999 \n",
+ "5 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "6 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "7 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "8 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "9 -7.052755 21.390778 -33.320000 -0.409999 28.598572 -33.639999 \n",
+ "10 -7.052755 21.390778 -33.320000 -0.409999 28.598572 -33.639999 \n",
+ "11 19.860044 10.748274 -47.400002 24.797796 16.227154 -47.240002 \n",
+ "12 -19.890659 -10.674363 24.760000 -25.242781 -14.857634 24.200001 \n",
+ "13 -19.890659 -10.674363 24.760000 -25.242781 -14.857634 24.200001 \n",
+ "14 -19.890659 -10.674363 24.760000 -25.242781 -14.857634 24.200001 \n",
+ "15 -19.890659 -10.674363 24.760000 -25.242781 -14.857634 24.200001 \n",
+ "16 -19.890659 -10.674363 24.760000 -25.242781 -14.857634 24.200001 \n",
+ "17 -19.890659 -10.674363 24.760000 -25.242781 -14.857634 24.200001 \n",
+ "18 -8.882037 -20.633064 -30.040001 -12.983168 -25.916956 -30.200001 \n",
+ "19 -21.115246 -7.717949 -24.680000 -26.750784 -10.216477 -24.600000 \n",
+ "20 15.404627 -17.931320 -36.439999 18.888992 -21.626123 -36.119999 \n",
+ "21 -22.247990 -4.983265 -10.280001 -30.069626 0.002129 -9.800000 \n",
+ "22 -22.247990 -4.983265 -10.280001 -30.069626 0.002129 -9.800000 \n",
+ "23 -22.247990 -4.983265 -10.280001 -30.069626 0.002129 -9.800000 \n",
+ "24 -19.928926 10.581976 -15.559999 -26.213095 11.871315 -15.480000 \n",
+ "25 8.364664 20.847366 -11.000000 6.710001 28.598572 -10.920000 \n",
+ "26 -15.256805 17.992550 4.200000 -22.642832 18.898800 4.440000 \n",
+ "27 -3.578969 22.829668 28.119999 -5.610000 28.598572 28.360001 \n",
+ "28 -3.578969 22.829668 28.119999 -5.610000 28.598572 28.360001 \n",
+ "29 -22.010725 5.556071 20.520000 -27.004177 9.436610 20.920000 \n",
+ "... ... ... ... ... ... ... \n",
+ "46866 1.805120 -23.564421 -22.040001 3.049999 -28.598572 -22.040001 \n",
+ "46867 -24.000679 0.751897 -38.439999 -29.674084 1.219481 -38.360001 \n",
+ "46868 -24.000679 0.751897 -38.439999 -29.674084 1.219481 -38.360001 \n",
+ "46869 -24.000679 0.751897 -38.439999 -29.674084 1.219481 -38.360001 \n",
+ "46870 -24.000679 0.751897 -38.439999 -29.674084 1.219481 -38.360001 \n",
+ "46871 22.676594 3.948521 -38.840000 28.926264 3.521039 -38.680000 \n",
+ "46872 22.676594 3.948521 -38.840000 28.926264 3.521039 -38.680000 \n",
+ "46873 22.676594 3.948521 -38.840000 28.926264 3.521039 -38.680000 \n",
+ "46874 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "46875 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "46876 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "46877 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "46878 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "46879 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "46880 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "46881 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "46882 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "46883 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "46884 -8.882037 -20.633064 -6.040000 -6.230000 -28.598572 -5.800000 \n",
+ "46885 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "46886 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "46887 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "46888 -19.921274 -10.600453 19.559999 -24.649467 -16.683662 19.400000 \n",
+ "46889 -19.921274 -10.600453 19.559999 -24.649467 -16.683662 19.400000 \n",
+ "46890 23.174084 -2.747478 11.320000 27.646933 -7.458413 11.559999 \n",
+ "46891 23.174084 -2.747478 11.320000 27.646933 -7.458413 11.559999 \n",
+ "46892 -12.374302 19.186522 -29.720001 -16.429581 23.412991 -29.799999 \n",
+ "46893 -20.939211 8.142934 -22.440001 -26.410866 11.262639 -22.760000 \n",
+ "46894 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "46895 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "\n",
+ " x3 y3 z3 x4 ... z5 \\\n",
+ "0 -21.724771 67.052704 -3.240000 -22.225971 ... 7.240000 \n",
+ "1 -66.736946 22.903200 4.360000 -74.096100 ... -3.720001 \n",
+ "2 -66.736946 22.903200 4.360000 -74.096100 ... -3.720001 \n",
+ "3 68.274330 17.165602 -21.240000 80.994446 ... -11.480000 \n",
+ "4 15.484889 68.724678 14.120000 23.103405 ... 28.119999 \n",
+ "5 64.025154 29.886627 -44.200001 76.569237 ... -48.599998 \n",
+ "6 -67.813629 18.884949 19.320000 -78.018410 ... 42.439999 \n",
+ "7 -67.813629 18.884949 19.320000 -78.018410 ... 42.439999 \n",
+ "8 -67.813629 18.884949 19.320000 -78.018410 ... 42.439999 \n",
+ "9 56.945152 42.149548 -38.520000 74.868416 ... -52.520000 \n",
+ "10 56.945152 42.149548 -38.520000 74.868416 ... -52.520000 \n",
+ "11 56.945152 42.149548 -46.840000 67.211060 ... -42.919998 \n",
+ "12 -62.665154 -32.242214 20.760000 -74.660149 ... -13.240000 \n",
+ "13 -62.665154 -32.242214 20.760000 -74.660149 ... -13.240000 \n",
+ "14 -62.665154 -32.242214 20.760000 -74.660149 ... -13.240000 \n",
+ "15 -62.665154 -32.242214 20.760000 -74.660149 ... -13.240000 \n",
+ "16 -62.665154 -32.242214 20.760000 -74.660149 ... -13.240000 \n",
+ "17 -62.665154 -32.242214 20.760000 -74.660149 ... -13.240000 \n",
+ "18 -47.546371 -52.001148 -32.360001 -60.527248 ... -44.919998 \n",
+ "19 -67.922340 -18.479261 -24.760000 -80.264580 ... -10.680000 \n",
+ "20 40.001804 -58.185154 -33.080002 43.343781 ... -14.120001 \n",
+ "21 -63.815155 30.250359 -7.560000 -71.631638 ... 40.919998 \n",
+ "22 -63.815155 30.250359 -7.560000 -71.631638 ... 40.919998 \n",
+ "23 -63.815155 30.250359 -7.560000 -71.631638 ... 40.919998 \n",
+ "24 -59.055157 38.494919 -15.800000 -63.856682 ... -4.040000 \n",
+ "25 6.210000 70.390724 -10.760000 8.752466 ... -8.680000 \n",
+ "26 -63.615158 30.596769 5.080000 -74.165520 ... -2.760000 \n",
+ "27 -9.949999 70.390724 29.559999 -8.190001 ... 47.639999 \n",
+ "28 -9.949999 70.390724 29.559999 -8.190001 ... 47.639999 \n",
+ "29 -55.734673 43.812851 23.799999 -61.412601 ... 55.799999 \n",
+ "... ... ... ... ... ... ... \n",
+ "46866 4.270000 -70.390724 -22.600000 2.190000 ... -33.799999 \n",
+ "46867 -67.979279 18.266756 -38.119999 -77.220062 ... -32.919998 \n",
+ "46868 -67.979279 18.266756 -38.119999 -77.220062 ... -32.919998 \n",
+ "46869 -67.979279 18.266756 -38.119999 -77.220062 ... -32.919998 \n",
+ "46870 -67.979279 18.266756 -38.119999 -77.220062 ... -32.919998 \n",
+ "46871 70.390724 -5.410000 -37.799999 82.075897 ... -21.400000 \n",
+ "46872 70.390724 -5.410000 -37.799999 82.075897 ... -21.400000 \n",
+ "46873 70.390724 -5.410000 -37.799999 82.075897 ... -21.400000 \n",
+ "46874 -33.783745 -61.775158 27.320000 -44.113327 ... 53.480000 \n",
+ "46875 -33.783745 -61.775158 27.320000 -44.113327 ... 53.480000 \n",
+ "46876 -33.783745 -61.775158 27.320000 -44.113327 ... 53.480000 \n",
+ "46877 46.061451 -53.486069 35.000000 51.978550 ... 45.000000 \n",
+ "46878 40.157688 58.095158 18.439999 58.581963 ... 17.000000 \n",
+ "46879 40.157688 58.095158 18.439999 58.581963 ... 17.000000 \n",
+ "46880 40.157688 58.095158 18.439999 58.581963 ... 17.000000 \n",
+ "46881 40.157688 58.095158 18.439999 58.581963 ... 17.000000 \n",
+ "46882 40.157688 58.095158 18.439999 58.581963 ... 17.000000 \n",
+ "46883 40.157688 58.095158 18.439999 58.581963 ... 17.000000 \n",
+ "46884 -1.250000 -70.390724 -4.680000 -2.370000 ... -11.400001 \n",
+ "46885 15.929216 -68.605621 0.280000 18.170271 ... 42.040001 \n",
+ "46886 15.929216 -68.605621 0.280000 18.170271 ... 42.040001 \n",
+ "46887 15.929216 -68.605621 0.280000 18.170271 ... 42.040001 \n",
+ "46888 -56.025154 -43.743034 18.840000 -65.964081 ... 10.120000 \n",
+ "46889 -56.025154 -43.743034 18.840000 -65.964081 ... 10.120000 \n",
+ "46890 53.698204 -45.849316 13.320000 58.983761 ... 40.119999 \n",
+ "46891 53.698204 -45.849316 13.320000 58.983761 ... 40.119999 \n",
+ "46892 -33.766418 61.785152 -30.760000 -34.045780 ... -44.919998 \n",
+ "46893 -59.615158 37.524971 -24.840000 -67.946777 ... -55.799999 \n",
+ "46894 25.279379 -66.100250 -38.040001 26.593647 ... -25.240002 \n",
+ "46895 25.279379 -66.100250 -38.040001 26.593647 ... -25.240002 \n",
+ "\n",
+ " x6 y6 z6 x7 y7 z7 \\\n",
+ "0 70.390724 0.190000 7.559999 28.802656 3.901462 6.040000 \n",
+ "1 69.040436 14.306461 -4.040000 26.880571 -9.817033 -4.840000 \n",
+ "2 69.040436 14.306461 -4.040000 26.880571 -9.817033 -4.840000 \n",
+ "3 -38.564201 -59.015156 -10.840000 -21.332224 -19.851011 -10.440001 \n",
+ "4 6.350000 -70.390724 28.520000 -7.870180 -29.631758 31.000000 \n",
+ "5 -36.693588 -60.095158 -48.759998 -19.520025 -21.167650 -49.799999 \n",
+ "6 51.110191 48.437328 43.400002 24.624746 16.759747 44.840000 \n",
+ "7 51.110191 48.437328 43.400002 24.624746 16.759747 44.840000 \n",
+ "8 51.110191 48.437328 43.400002 24.624746 16.759747 44.840000 \n",
+ "9 6.430000 -70.390724 -52.440002 -17.448942 -22.672380 -49.720001 \n",
+ "10 6.430000 -70.390724 -52.440002 -17.448942 -22.672380 -49.720001 \n",
+ "11 -9.766608 -70.256882 -42.760002 -1.830000 -28.598572 -41.239998 \n",
+ "12 17.184917 68.269157 -14.280001 9.099886 28.738325 -19.639999 \n",
+ "13 17.184917 68.269157 -14.280001 9.099886 28.738325 -19.639999 \n",
+ "14 17.184917 68.269157 -14.280001 9.099886 28.738325 -19.639999 \n",
+ "15 17.184917 68.269157 -14.280001 9.099886 28.738325 -19.639999 \n",
+ "16 17.184917 68.269157 -14.280001 9.099886 28.738325 -19.639999 \n",
+ "17 17.184917 68.269157 -14.280001 9.099886 28.738325 -19.639999 \n",
+ "18 1.410000 70.390724 -45.480000 11.365134 27.092525 -45.320000 \n",
+ "19 40.088406 58.135159 -10.440001 19.973076 20.838491 -9.880000 \n",
+ "20 -70.443237 9.071142 -13.960001 -28.141359 5.936723 -13.960000 \n",
+ "21 63.415157 -30.943180 41.799999 16.300138 -23.507036 44.360001 \n",
+ "22 63.415157 -30.943180 41.799999 16.300138 -23.507036 44.360001 \n",
+ "23 63.415157 -30.943180 41.799999 16.300138 -23.507036 44.360001 \n",
+ "24 45.962456 53.585068 -3.480000 23.833664 19.194452 -2.360001 \n",
+ "25 56.470062 -43.077457 -8.600000 25.520897 -14.001682 -7.320001 \n",
+ "26 64.025154 29.886627 -2.840000 23.932549 18.890114 -3.960001 \n",
+ "27 61.495155 -34.268715 48.119999 25.545618 -13.925597 49.320000 \n",
+ "28 61.495155 -34.268715 48.119999 25.545618 -13.925597 49.320000 \n",
+ "29 68.496918 -16.334904 56.439999 25.174797 -15.066865 58.599998 \n",
+ "... ... ... ... ... ... ... \n",
+ "46866 -50.530365 49.017155 -34.040001 -18.888992 21.626123 -35.000000 \n",
+ "46867 51.619308 47.928211 -32.520000 26.182192 11.966422 -28.760000 \n",
+ "46868 51.619308 47.928211 -32.520000 26.182192 11.966422 -28.760000 \n",
+ "46869 51.619308 47.928211 -32.520000 26.182192 11.966422 -28.760000 \n",
+ "46870 51.619308 47.928211 -32.520000 26.182192 11.966422 -28.760000 \n",
+ "46871 -67.839516 -18.788357 -21.080000 -28.827377 -3.825377 -20.120001 \n",
+ "46872 -67.839516 -18.788357 -21.080000 -28.827377 -3.825377 -20.120001 \n",
+ "46873 -67.839516 -18.788357 -21.080000 -28.827377 -3.825377 -20.120001 \n",
+ "46874 16.566727 68.434799 53.799999 14.924809 24.506271 54.840000 \n",
+ "46875 16.566727 68.434799 53.799999 14.924809 24.506271 54.840000 \n",
+ "46876 16.566727 68.434799 53.799999 14.924809 24.506271 54.840000 \n",
+ "46877 -66.964706 22.053185 45.160000 -26.460308 11.110470 45.720001 \n",
+ "46878 54.037613 -45.509907 16.680000 7.690000 -28.598572 12.679999 \n",
+ "46879 54.037613 -45.509907 16.680000 7.690000 -28.598572 12.679999 \n",
+ "46880 54.037613 -45.509907 16.680000 7.690000 -28.598572 12.679999 \n",
+ "46881 54.037613 -45.509907 16.680000 7.690000 -28.598572 12.679999 \n",
+ "46882 54.037613 -45.509907 16.680000 7.690000 -28.598572 12.679999 \n",
+ "46883 54.037613 -45.509907 16.680000 7.690000 -28.598572 12.679999 \n",
+ "46884 -55.791237 43.756279 -11.480000 -25.941158 12.708245 -10.840000 \n",
+ "46885 -63.455158 30.873898 42.759998 -27.993032 6.393229 46.040001 \n",
+ "46886 -63.455158 30.873898 42.759998 -27.993032 6.393229 46.040001 \n",
+ "46887 -63.455158 30.873898 42.759998 -27.993032 6.393229 46.040001 \n",
+ "46888 6.370000 70.390724 9.959999 -0.570000 28.598572 8.599999 \n",
+ "46889 6.370000 70.390724 9.959999 -0.570000 28.598572 8.599999 \n",
+ "46890 -53.245655 46.301865 40.439999 -11.704922 26.845655 41.320000 \n",
+ "46891 -53.245655 46.301865 40.439999 -11.704922 26.845655 41.320000 \n",
+ "46892 70.390724 2.510000 -45.639999 29.303265 -2.360749 -48.040001 \n",
+ "46893 69.242310 -13.553038 -56.279999 26.410866 -11.262639 -57.720001 \n",
+ "46894 -53.698204 45.849316 -25.080000 -20.053978 20.779713 -25.560001 \n",
+ "46895 -53.698204 45.849316 -25.080000 -20.053978 20.779713 -25.560001 \n",
+ "\n",
+ " x8 y8 z8 \n",
+ "0 21.421392 6.978845 5.640000 \n",
+ "1 19.684010 -11.173258 -5.000000 \n",
+ "2 19.684010 -11.173258 -5.000000 \n",
+ "3 -17.870090 -15.552447 -10.440001 \n",
+ "4 -9.177679 -20.510605 31.799999 \n",
+ "5 -17.012880 -17.621937 -49.880001 \n",
+ "6 18.849760 13.187316 44.919998 \n",
+ "7 18.849760 13.187316 44.919998 \n",
+ "8 18.849760 13.187316 44.919998 \n",
+ "9 -17.349640 -16.808924 -49.320000 \n",
+ "10 -17.349640 -16.808924 -49.320000 \n",
+ "11 -0.086704 -24.276211 -41.000000 \n",
+ "12 5.851712 21.888266 -20.680000 \n",
+ "13 5.851712 21.888266 -20.680000 \n",
+ "14 5.851712 21.888266 -20.680000 \n",
+ "15 5.851712 21.888266 -20.680000 \n",
+ "16 5.851712 21.888266 -20.680000 \n",
+ "17 5.851712 21.888266 -20.680000 \n",
+ "18 10.803707 19.837084 -44.840000 \n",
+ "19 17.104723 17.400206 -9.800000 \n",
+ "20 -22.592403 4.151774 -13.880000 \n",
+ "21 8.309232 -20.870329 44.840000 \n",
+ "22 8.309232 -20.870329 44.840000 \n",
+ "23 8.309232 -20.870329 44.840000 \n",
+ "24 17.808861 15.700268 -2.200001 \n",
+ "25 21.153515 -7.625561 -7.240001 \n",
+ "26 16.798576 18.139311 -4.200001 \n",
+ "27 20.479992 -9.251589 49.400002 \n",
+ "28 20.479992 -9.251589 49.400002 \n",
+ "29 18.704340 -13.538390 58.919998 \n",
+ "... ... ... ... \n",
+ "46866 -15.848089 17.747631 -35.080002 \n",
+ "46867 20.870329 8.309232 -28.119999 \n",
+ "46868 20.870329 8.309232 -28.119999 \n",
+ "46869 20.870329 8.309232 -28.119999 \n",
+ "46870 20.870329 8.309232 -28.119999 \n",
+ "46871 -23.258274 -2.544224 -19.959999 \n",
+ "46872 -23.258274 -2.544224 -19.959999 \n",
+ "46873 -23.258274 -2.544224 -19.959999 \n",
+ "46874 13.834032 18.581881 55.160000 \n",
+ "46875 13.834032 18.581881 55.160000 \n",
+ "46876 13.834032 18.581881 55.160000 \n",
+ "46877 -20.755524 8.586395 45.720001 \n",
+ "46878 2.913775 -23.105200 11.880000 \n",
+ "46879 2.913775 -23.105200 11.880000 \n",
+ "46880 2.913775 -23.105200 11.880000 \n",
+ "46881 2.913775 -23.105200 11.880000 \n",
+ "46882 2.913775 -23.105200 11.880000 \n",
+ "46883 2.913775 -23.105200 11.880000 \n",
+ "46884 -21.857651 5.925623 -10.520000 \n",
+ "46885 -23.510843 1.934464 46.439999 \n",
+ "46886 -23.510843 1.934464 46.439999 \n",
+ "46887 -23.510843 1.934464 46.439999 \n",
+ "46888 -2.470313 23.288887 8.360000 \n",
+ "46889 -2.470313 23.288887 8.360000 \n",
+ "46890 -4.835445 22.309217 41.480000 \n",
+ "46891 -4.835445 22.309217 41.480000 \n",
+ "46892 23.847605 -1.121449 -48.279999 \n",
+ "46893 20.173845 -9.990692 -57.959999 \n",
+ "46894 -16.661102 17.410870 -25.560001 \n",
+ "46895 -16.661102 17.410870 -25.560001 \n",
+ "\n",
+ "[46896 rows x 24 columns]"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "#import data as array\n",
+ "# 8 hits with x,y,z\n",
+ "\n",
+ "testset = pd.read_pickle('matched_8hittracks.pkl')\n",
+ "testset"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Convert the data to an array (float32)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Convert the data\n",
+ "\n",
+ "tset = np.array(testset)\n",
+ "tset = tset.astype('float32')\n",
+ "\n",
+ "#Check testset with arbitrary particle\n",
+ "\n",
+ "#print(tset.shape)\n",
+ "#for i in range(8):\n",
+ " #print(tset[1,3*i:(3*i+3)])\n",
+ "#print(tset[0,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Transformation between original 2D-array into 3D-array\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### reshapor()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Transforms 2D-array into 3D array\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- arr_orig: Original 2D array\n",
+ "- num_inputs: Number of inputs per timestep (default value = 3 for X,Y,Z coordinates)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particlenumber, timesteps, input = coordinates)\n",
+ "\n",
+ "\n",
+ "***\n",
+ "\n",
+ "\n",
+ "### reshapor_inv()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Inverse transformation from 3D-array into 2D-array\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- array_shaped: 3D-array of shape(particlenumber, timesteps, input = coordinates)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: 2D-array of shape(particlenumber, inputs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Reshapes the 2D-array to a 3D-array\n",
+ "\n",
+ "def reshapor(arr_orig, num_inputs=3):\n",
+ " timesteps = int(arr_orig.shape[1]/num_inputs)\n",
+ " number_examples = int(arr_orig.shape[0])\n",
+ " arr = np.zeros((number_examples, timesteps, num_inputs))\n",
+ " \n",
+ " for i in range(number_examples):\n",
+ " for t in range(timesteps):\n",
+ " arr[i,t,:] = arr_orig[i,num_inputs*t:num_inputs*t+num_inputs]\n",
+ " \n",
+ " return arr\n",
+ "\n",
+ "#The inverse transformation of the reshapor function (3D to 2D)\n",
+ "\n",
+ "def reshapor_inv(array_shaped):\n",
+ " num_inputs = array_shaped.shape[2]\n",
+ " timesteps = int(array_shaped.shape[1])\n",
+ " num_examples = int(array_shaped.shape[0])\n",
+ " arr = np.zeros((num_examples, timesteps*num_inputs))\n",
+ " \n",
+ " for i in range(num_examples):\n",
+ " for t in range(timesteps):\n",
+ " arr[i,num_inputs*t:num_inputs*t+num_inputs] = array_shaped[i,t,:]\n",
+ " \n",
+ " return arr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Create random training and test sets from the data\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### create_random_sets()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Splits an dataset into a train and a test set\n",
+ "\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- dataset: The actual dataset with shape (particles, other dimensions)\n",
+ "- train_to_total_ratio: The ratio that the training-set should be out of the original set.\n",
+ " The remaining part will become the test-set\n",
+ " \n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- train_set: The newly created training set (particles, other dimensions)\n",
+ "- test_set: The newly created test set (particles, other dimensions)\n",
+ " \n",
+ " \n",
+ "**Additional comments:**\n",
+ "\n",
+ "The data will be randomly shuffled before it gets split up"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### create the training set and the test set###\n",
+ "\n",
+ "def create_random_sets(dataset, train_to_total_ratio):\n",
+ " #shuffle the dataset\n",
+ " num_examples = dataset.shape[0]\n",
+ " p = np.random.permutation(num_examples)\n",
+ " dataset = dataset[p,:]\n",
+ " \n",
+ " #evaluate size of training and test set and initialize them\n",
+ " train_set_size = np.int(num_examples*train_to_total_ratio)\n",
+ " test_set_size = num_examples - train_set_size\n",
+ " \n",
+ " train_set = np.zeros((train_set_size, dataset.shape[1]))\n",
+ " test_set = np.zeros((test_set_size, dataset.shape[1]))\n",
+ " \n",
+ "\n",
+ " #fill train and test sets\n",
+ " for i in range(num_examples):\n",
+ " if train_set_size > i:\n",
+ " train_set[i,:] += dataset[i,:]\n",
+ " else:\n",
+ " test_set[i - train_set_size,:] += dataset[i,:]\n",
+ " \n",
+ " return train_set, test_set\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Create the training and test-sets\n",
+ "\n",
+ "train_set, test_set = create_random_sets(tset, 0.9)\n",
+ "\n",
+ "#print(test_set.shape, train_set.shape, reshapor(tset).shape)\n",
+ "#print(test_set[0,:,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Normalization of the data\n",
+ "\n",
+ "***\n",
+ "\n",
+ "## Normalization based on min_max_scaler from sklearn\n",
+ "\n",
+ "### correct_array_steps()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "As the scaler will be fixed on arrays of specific length this function returns an array padded with zeros with the correct shape\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- steps: Required number of timesteps for the scaler (default value = 8)\n",
+ "- num_inputs: Number of inputs per timestep (default value = 3 for X,Y,Z coordinates)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: 3D array of shape(particle_number, steps, num_inputs)\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### set_min_max_scaler()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Sets the min_max_scaler based on the dataset given (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 2D of shape(particle_number, inputs) or 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- feature_range: Tuple which defines the area to which the data should be scaled (default value = (-1,1))\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- min_max_scalor: min_max_scaler based of the data given\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### min_max_scaler()\n",
+ "\n",
+ "**Description:** \n",
+ "\n",
+ "Transforms a 3D-array with a given min_max_scaler (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- min_max_scalor: The min_max_scaler used for the transformation (default value: min_max_scalor)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### min_max_scaler_inv()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Transforms a 3D-array with a given min_max_scaler back to original form (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- min_max_scalor: The min_max_scaler used for the transformation (default value: min_max_scalor)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Normalize the data advanced version with scikit learn\n",
+ "def correct_array_steps(arr, steps= 8, num_inputs= 3): #steps > array_steps\n",
+ " if arr.shape[1] != steps:\n",
+ " _ = np.zeros((arr.shape[0], steps, num_inputs))\n",
+ " _[:,:arr.shape[1],:] += arr\n",
+ " arr = _\n",
+ " return arr\n",
+ "\n",
+ "\n",
+ "#set the transormation based on training set\n",
+ "def set_min_max_scaler(arr, feature_range= (-1,1)):\n",
+ " min_max_scalor = preprocessing.MinMaxScaler(feature_range=feature_range)\n",
+ " if len(arr.shape) == 3:\n",
+ " arr = reshapor(min_max_scalor.fit_transform(reshapor_inv(arr))) \n",
+ " else:\n",
+ " arr = min_max_scalor.fit_transform(arr)\n",
+ " return min_max_scalor\n",
+ "\n",
+ "min_max_scalor = set_min_max_scaler(train_set)\n",
+ "\n",
+ "\n",
+ "#transform data\n",
+ "def min_max_scaler(arr, min_max_scalor= min_max_scalor):\n",
+ " num_inputs = arr.shape[2]\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(min_max_scalor.transform(reshapor_inv(arr)), num_inputs=num_inputs)\n",
+ " return arr\n",
+ " \n",
+ "#inverse transformation\n",
+ "def min_max_scaler_inv(arr, min_max_scalor= min_max_scalor):\n",
+ " num_inputs = arr.shape[2]\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(min_max_scalor.inverse_transform(reshapor_inv(arr)), num_inputs=num_inputs)\n",
+ " return arr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Normalization based on a standard_scaler from sklearn\n",
+ "\n",
+ "\n",
+ "### set_std_scaler()\n",
+ "\n",
+ "**Description: **\n",
+ "\n",
+ "Sets the std_scaler based on the dataset given (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 2D of shape(particle_number, inputs) or 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- feature_range: Tuple which defines the area to which the data should be scaled (default value = (-1,1))\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- std_scalor: std_scaler based of the data given\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### std_scaler()\n",
+ "\n",
+ "**Description: **\n",
+ "\n",
+ "Transforms a 3D-array with a given std_scaler (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: The std_scaler used for the transformation (default value: std_scaler)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### std_scaler_inv()\n",
+ "\n",
+ "**Description: **\n",
+ "\n",
+ "Transforms a 3D-array with a given std_scaler back to original form (sklearn based)\n",
+ "\n",
+ "**Input:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: The std_scaler used for the transformation (default value: std_scaler)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Transformed 3D-array"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Normalize the data advanced version with scikit learn - Standard scaler\n",
+ "\n",
+ "#set the transormation based on training set\n",
+ "def set_std_scaler(arr):\n",
+ " std_scalor = preprocessing.StandardScaler()\n",
+ " if len(arr.shape) == 3:\n",
+ " arr = reshapor(std_scalor.fit_transform(reshapor_inv(arr))) \n",
+ " else:\n",
+ " arr = std_scalor.fit_transform(arr)\n",
+ " return std_scalor\n",
+ "\n",
+ "std_scalor = set_std_scaler(train_set)\n",
+ "\n",
+ "#transform data\n",
+ "def std_scaler(arr, std_scalor= std_scalor, num_inputs=3):\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(std_scalor.transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ " \n",
+ "#inverse transformation\n",
+ "def std_scaler_inv(arr, std_scalor= std_scalor, num_inputs=3):\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(std_scalor.inverse_transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#reshape the data\n",
+ "\n",
+ "train_set = reshapor(train_set)\n",
+ "test_set = reshapor(test_set)\n",
+ "\n",
+ "#print(train_set[0,:,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Scale the data using the min_max_scaler or the std_scaler defined before\n",
+ "\n",
+ "### scaler()\n",
+ "\n",
+ "****Description:****\n",
+ "\n",
+ "Shapes and transforms the data with a given sklearn scaler\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: std_scaler of sklearn (default value = std_scalor defined above)\n",
+ "- min_max_scalor: min_max_scalor of sklearn (default value = min_max_scalor defined above)\n",
+ "- scalerfunc: string of the name of the scalerfunction to be used (default value = \"minmax\")\n",
+ "- scalor: sklearn scaler, if a scaler is given the array arr will be shaped and scaled with scalor (default value false)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Shaped and transformed 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "\n",
+ "**Additional comments:**\n",
+ "\n",
+ "By default included values for scalerfunc are \"minmax\" and \"std\" for a min_max_scaler and a std_scaler respectively.\n",
+ "For other scalers a scaler has to be given scalor argument.\n",
+ "\n",
+ "***\n",
+ "\n",
+ "### scaler_inv()\n",
+ "\n",
+ "**Description:**\n",
+ "\n",
+ "Shapes and transforms the data back to its original shape with a given sklearn scaler\n",
+ "\n",
+ "**Arguments:**\n",
+ "\n",
+ "- arr: 3D-array of shape(particle_number, timesteps, num_inputs)\n",
+ "- std_scalor: std_scaler of sklearn (default value = std_scalor defined above)\n",
+ "- min_max_scalor: min_max_scalor of sklearn (default value = min_max_scalor defined above)\n",
+ "- scalerfunc: string of the name of the scalerfunction to be used (default value = \"minmax\")\n",
+ "- scalor: sklearn scaler, if a scaler is given the array arr will be shaped and scaled with scalor (default value false)\n",
+ "\n",
+ "**Returns:**\n",
+ "\n",
+ "- arr: Shaped and inverse transformed 3D-array of shape(particle_number, timesteps, num_inputs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def scaler(arr, std_scalor= std_scalor, min_max_scalor= min_max_scalor, scalerfunc= \"minmax\", scalor = False):\n",
+ " \n",
+ " if scalor != False:\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(scalor.transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"std\":\n",
+ " arr = std_scaler(arr, std_scalor= std_scalor)\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"minmax\":\n",
+ " arr = min_max_scaler(arr, min_max_scalor= min_max_scalor)\n",
+ " return arr\n",
+ " \n",
+ " else:\n",
+ " raise ValueError(\"Uknown scaler chosen: {}\".format(scalerfunc))\n",
+ "\n",
+ "def scaler_inv(arr, std_scalor= std_scalor, min_max_scalor= min_max_scalor, scalerfunc= \"std\", scalor = False):\n",
+ "\n",
+ " num_inputs = arr.shape[2]\n",
+ " \n",
+ " if scalor != False:\n",
+ " arr = correct_array_steps(arr)\n",
+ " arr = reshapor(scalor.inverse_transform(reshapor_inv(arr)))\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"std\":\n",
+ " arr = std_scaler_inv(arr, std_scalor= std_scalor)\n",
+ " return arr\n",
+ " \n",
+ " elif scalerfunc == \"minmax\":\n",
+ " arr = min_max_scaler_inv(arr, min_max_scalor= min_max_scalor)\n",
+ " return arr\n",
+ " \n",
+ " else:\n",
+ " raise ValueError(\"Uknown scaler chosen: {}\".format(scalerfunc))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#scale the data\n",
+ "scalor = pkl.load( open(\"scalor.pkl\" , \"rb\" ) )\n",
+ "\n",
+ "func = \"minmax\"\n",
+ "\n",
+ "train_set = scaler(train_set, scalerfunc = func, scalor= scalor)\n",
+ "test_set = scaler(test_set, scalerfunc = func, scalor= scalor)\n",
+ "\n",
+ "if func == \"minmax\":\n",
+ " scalor = min_max_scalor\n",
+ "elif func == \"std\":\n",
+ " scalor = std_scalor\n",
+ "\n",
+ "#print(train_set[0,:,:])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# truncate and pad input sequences\n",
+ "max_review_length = 4\n",
+ "filepath = \"trained_models/keras_RNN.h5\"\n",
+ "\n",
+ "X_train = train_set[:,:-4,:]\n",
+ "Y_train = reshapor_inv(train_set[:,4:,:])\n",
+ "X_test = test_set[:,:-4,:]\n",
+ "Y_test = reshapor_inv(test_set[:,4:,:])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(42206, 12)\n",
+ "WARNING:tensorflow:From c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
+ "Instructions for updating:\n",
+ "Use the retry module or similar alternatives.\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "lstm_1 (LSTM) (None, 4, 50) 10800 \n",
+ "_________________________________________________________________\n",
+ "batch_normalization_1 (Batch (None, 4, 50) 200 \n",
+ "_________________________________________________________________\n",
+ "lstm_2 (LSTM) (None, 50) 20200 \n",
+ "_________________________________________________________________\n",
+ "batch_normalization_2 (Batch (None, 50) 200 \n",
+ "_________________________________________________________________\n",
+ "dense_1 (Dense) (None, 50) 2550 \n",
+ "_________________________________________________________________\n",
+ "batch_normalization_3 (Batch (None, 50) 200 \n",
+ "_________________________________________________________________\n",
+ "dense_2 (Dense) (None, 12) 612 \n",
+ "=================================================================\n",
+ "Total params: 34,762\n",
+ "Trainable params: 34,462\n",
+ "Non-trainable params: 300\n",
+ "_________________________________________________________________\n",
+ "None\n",
+ "Train on 42206 samples, validate on 4690 samples\n",
+ "Epoch 1/10\n"
+ ]
+ },
+ {
+ "ename": "InternalError",
+ "evalue": "Blas GEMM launch failed : a.shape=(50, 50), b.shape=(50, 50), m=50, n=50, k=50\n\t [[Node: lstm_1/while/MatMul_7 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](lstm_1/while/Switch_2:1, lstm_1/while/MatMul_7/Enter)]]\n\t [[Node: loss/mul/_281 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_4530_loss/mul\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n\nCaused by op 'lstm_1/while/MatMul_7', defined at:\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\runpy.py\", line 193, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in \n app.launch_new_instance()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n app.start()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 486, in start\n self.io_loop.start()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 112, in start\n self.asyncio_loop.run_forever()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\asyncio\\base_events.py\", line 422, in run_forever\n self._run_once()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\asyncio\\base_events.py\", line 1432, in _run_once\n handle._run()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\asyncio\\events.py\", line 145, in _run\n self._callback(*self._args)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\ioloop.py\", line 760, in _run_callback\n ret = callback()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\stack_context.py\", line 276, in null_wrapper\n return fn(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 536, in \n self.io_loop.add_callback(lambda : self._handle_events(self.socket, 0))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 450, in _handle_events\n self._handle_recv()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 480, in _handle_recv\n self._run_callback(callback, msg)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 432, in _run_callback\n callback(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\stack_context.py\", line 276, in null_wrapper\n return fn(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 283, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 233, in dispatch_shell\n handler(stream, idents, msg)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 399, in execute_request\n user_expressions, allow_stdin)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 208, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 537, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2662, in run_cell\n raw_cell, store_history, silent, shell_futures)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2785, in _run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2903, in run_ast_nodes\n if self.run_code(code, result):\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2963, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"\", line 14, in \n model.add(LSTM(50, return_sequences=True, input_shape=(4,3), activation = 'tanh'))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\models.py\", line 467, in add\n layer(x)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 499, in __call__\n return super(RNN, self).__call__(inputs, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\engine\\topology.py\", line 619, in __call__\n output = self.call(inputs, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 2151, in call\n initial_state=initial_state)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 608, in call\n input_length=timesteps)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\", line 2767, in rnn\n swap_memory=True)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\control_flow_ops.py\", line 3202, in while_loop\n result = loop_context.BuildLoop(cond, body, loop_vars, shape_invariants)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\control_flow_ops.py\", line 2940, in BuildLoop\n pred, body, original_loop_vars, loop_vars, shape_invariants)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\control_flow_ops.py\", line 2877, in _BuildLoop\n body_result = body(*packed_vars_for_body)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\", line 2753, in _step\n tuple(constants))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 599, in step\n return self.cell.call(inputs, states, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 1947, in call\n self.recurrent_kernel_o))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\", line 1075, in dot\n out = tf.matmul(x, y)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\math_ops.py\", line 2108, in matmul\n a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\gen_math_ops.py\", line 4492, in mat_mul\n name=name)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\op_def_library.py\", line 787, in _apply_op_helper\n op_def=op_def)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\", line 3290, in create_op\n op_def=op_def)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\", line 1654, in __init__\n self._traceback = self._graph._extract_stack() # pylint: disable=protected-access\n\nInternalError (see above for traceback): Blas GEMM launch failed : a.shape=(50, 50), b.shape=(50, 50), m=50, n=50, k=50\n\t [[Node: lstm_1/while/MatMul_7 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](lstm_1/while/Switch_2:1, lstm_1/while/MatMul_7/Enter)]]\n\t [[Node: loss/mul/_281 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_4530_loss/mul\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mInternalError\u001b[0m Traceback (most recent call last)",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_do_call\u001b[1;34m(self, fn, *args)\u001b[0m\n\u001b[0;32m 1326\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1327\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1328\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[1;34m(feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[0;32m 1311\u001b[0m return self._call_tf_sessionrun(\n\u001b[1;32m-> 1312\u001b[1;33m options, feed_dict, fetch_list, target_list, run_metadata)\n\u001b[0m\u001b[0;32m 1313\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_call_tf_sessionrun\u001b[1;34m(self, options, feed_dict, fetch_list, target_list, run_metadata)\u001b[0m\n\u001b[0;32m 1419\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moptions\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1420\u001b[1;33m status, run_metadata)\n\u001b[0m\u001b[0;32m 1421\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\errors_impl.py\u001b[0m in \u001b[0;36m__exit__\u001b[1;34m(self, type_arg, value_arg, traceback_arg)\u001b[0m\n\u001b[0;32m 515\u001b[0m \u001b[0mcompat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mc_api\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTF_Message\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 516\u001b[1;33m c_api.TF_GetCode(self.status.status))\n\u001b[0m\u001b[0;32m 517\u001b[0m \u001b[1;31m# Delete the underlying status object from memory otherwise it stays alive\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;31mInternalError\u001b[0m: Blas GEMM launch failed : a.shape=(50, 50), b.shape=(50, 50), m=50, n=50, k=50\n\t [[Node: lstm_1/while/MatMul_7 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](lstm_1/while/Switch_2:1, lstm_1/while/MatMul_7/Enter)]]\n\t [[Node: loss/mul/_281 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_4530_loss/mul\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]",
+ "\nDuring handling of the above exception, another exception occurred:\n",
+ "\u001b[1;31mInternalError\u001b[0m Traceback (most recent call last)",
+ "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 23\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 25\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalidation_data\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m50\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[1;33m=\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 26\u001b[0m \u001b[1;31m# model_4_to_4 = load_model(filepath)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\models.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[0;32m 961\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 962\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 963\u001b[1;33m validation_steps=validation_steps)\n\u001b[0m\u001b[0;32m 964\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 965\u001b[0m def evaluate(self, x=None, y=None,\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\engine\\training.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[0;32m 1703\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1704\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1705\u001b[1;33m validation_steps=validation_steps)\n\u001b[0m\u001b[0;32m 1706\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1707\u001b[0m def evaluate(self, x=None, y=None,\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\engine\\training.py\u001b[0m in \u001b[0;36m_fit_loop\u001b[1;34m(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[0;32m 1233\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtoarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1234\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1235\u001b[1;33m \u001b[0mouts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1236\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1237\u001b[0m \u001b[0mouts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, inputs)\u001b[0m\n\u001b[0;32m 2476\u001b[0m \u001b[0msession\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2477\u001b[0m updated = session.run(fetches=fetches, feed_dict=feed_dict,\n\u001b[1;32m-> 2478\u001b[1;33m **self.session_kwargs)\n\u001b[0m\u001b[0;32m 2479\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2480\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m 903\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 904\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[1;32m--> 905\u001b[1;33m run_metadata_ptr)\n\u001b[0m\u001b[0;32m 906\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 907\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_run\u001b[1;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m 1138\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mhandle\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mfeed_dict_tensor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1139\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[1;32m-> 1140\u001b[1;33m feed_dict_tensor, options, run_metadata)\n\u001b[0m\u001b[0;32m 1141\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1142\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_do_run\u001b[1;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m 1319\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1320\u001b[0m return self._do_call(_run_fn, feeds, fetches, targets, options,\n\u001b[1;32m-> 1321\u001b[1;33m run_metadata)\n\u001b[0m\u001b[0;32m 1322\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1323\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_do_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_prun_fn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeeds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfetches\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;32mc:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_do_call\u001b[1;34m(self, fn, *args)\u001b[0m\n\u001b[0;32m 1338\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1339\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1340\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnode_def\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1341\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1342\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_extend_graph\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+ "\u001b[1;31mInternalError\u001b[0m: Blas GEMM launch failed : a.shape=(50, 50), b.shape=(50, 50), m=50, n=50, k=50\n\t [[Node: lstm_1/while/MatMul_7 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](lstm_1/while/Switch_2:1, lstm_1/while/MatMul_7/Enter)]]\n\t [[Node: loss/mul/_281 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_4530_loss/mul\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n\nCaused by op 'lstm_1/while/MatMul_7', defined at:\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\runpy.py\", line 193, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in \n app.launch_new_instance()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n app.start()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 486, in start\n self.io_loop.start()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 112, in start\n self.asyncio_loop.run_forever()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\asyncio\\base_events.py\", line 422, in run_forever\n self._run_once()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\asyncio\\base_events.py\", line 1432, in _run_once\n handle._run()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\asyncio\\events.py\", line 145, in _run\n self._callback(*self._args)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\ioloop.py\", line 760, in _run_callback\n ret = callback()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\stack_context.py\", line 276, in null_wrapper\n return fn(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 536, in \n self.io_loop.add_callback(lambda : self._handle_events(self.socket, 0))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 450, in _handle_events\n self._handle_recv()\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 480, in _handle_recv\n self._run_callback(callback, msg)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\zmq\\eventloop\\zmqstream.py\", line 432, in _run_callback\n callback(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tornado\\stack_context.py\", line 276, in null_wrapper\n return fn(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 283, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 233, in dispatch_shell\n handler(stream, idents, msg)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 399, in execute_request\n user_expressions, allow_stdin)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 208, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 537, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2662, in run_cell\n raw_cell, store_history, silent, shell_futures)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2785, in _run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2903, in run_ast_nodes\n if self.run_code(code, result):\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2963, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"\", line 14, in \n model.add(LSTM(50, return_sequences=True, input_shape=(4,3), activation = 'tanh'))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\models.py\", line 467, in add\n layer(x)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 499, in __call__\n return super(RNN, self).__call__(inputs, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\engine\\topology.py\", line 619, in __call__\n output = self.call(inputs, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 2151, in call\n initial_state=initial_state)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 608, in call\n input_length=timesteps)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\", line 2767, in rnn\n swap_memory=True)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\control_flow_ops.py\", line 3202, in while_loop\n result = loop_context.BuildLoop(cond, body, loop_vars, shape_invariants)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\control_flow_ops.py\", line 2940, in BuildLoop\n pred, body, original_loop_vars, loop_vars, shape_invariants)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\control_flow_ops.py\", line 2877, in _BuildLoop\n body_result = body(*packed_vars_for_body)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\", line 2753, in _step\n tuple(constants))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 599, in step\n return self.cell.call(inputs, states, **kwargs)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\layers\\recurrent.py\", line 1947, in call\n self.recurrent_kernel_o))\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\", line 1075, in dot\n out = tf.matmul(x, y)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\math_ops.py\", line 2108, in matmul\n a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\ops\\gen_math_ops.py\", line 4492, in mat_mul\n name=name)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\op_def_library.py\", line 787, in _apply_op_helper\n op_def=op_def)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\", line 3290, in create_op\n op_def=op_def)\n File \"c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\", line 1654, in __init__\n self._traceback = self._graph._extract_stack() # pylint: disable=protected-access\n\nInternalError (see above for traceback): Blas GEMM launch failed : a.shape=(50, 50), b.shape=(50, 50), m=50, n=50, k=50\n\t [[Node: lstm_1/while/MatMul_7 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](lstm_1/while/Switch_2:1, lstm_1/while/MatMul_7/Enter)]]\n\t [[Node: loss/mul/_281 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_4530_loss/mul\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(Y_train.shape)\n",
+ "\n",
+ "callbacks = [\n",
+ " EarlyStopping(monitor='val_loss', patience=3, min_delta=3/10**7),\n",
+ " ModelCheckpoint(filepath, monitor='val_loss', save_best_only=True),\n",
+ " History(),\n",
+ " TensorBoard(log_dir= filepath[:-3] + \"/logs\", histogram_freq=1, batch_size=50)\n",
+ "]\n",
+ "\n",
+ "#\n",
+ "\n",
+ "# create the model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(50, return_sequences=True, input_shape=(4,3), activation = 'tanh'))\n",
+ "model.add(BatchNormalization())\n",
+ "model.add(LSTM(50, return_sequences=False, activation = 'tanh')) \n",
+ "model.add(BatchNormalization())\n",
+ "model.add(Dense(50, activation='tanh'))\n",
+ "model.add(BatchNormalization())\n",
+ "model.add(Dense(12, activation='tanh'))\n",
+ "model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
+ "print(model.summary())\n",
+ "\n",
+ "\n",
+ "model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=10, batch_size=50, callbacks= callbacks)\n",
+ "# model_4_to_4 = load_model(filepath)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model_4_to_4 = load_model(filepath)\n",
+ "\n",
+ "prediction = model_4_to_4.predict(X_test)\n",
+ "\n",
+ "print(prediction[615,:]-Y_test[615,:])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Finding the right track\n",
+ "\n",
+ "***\n",
+ "\n",
+ "## Loading the data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "matched_unmatched_tracks = pd.read_pickle('matched_8hittracks2.pkl')\n",
+ "matched_unmatched_tracks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#plt.figure()\n",
+ "#plt.hist(matched_unmatched_tracks['trackchi2'][matched_unmatched_tracks['matched'] == 1], label='matched', alpha=0.5, normed=True)\n",
+ "#plt.hist(matched_unmatched_tracks['trackchi2'][matched_unmatched_tracks['matched'] == 0], label='not matched', alpha=0.5, normed=True)\n",
+ "#plt.legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "matched_unmatched_tracks = np.array(matched_unmatched_tracks)\n",
+ "matched_unmatched_tracks = matched_unmatched_tracks.astype('float32')\n",
+ "truth = matched_unmatched_tracks[:,-1]\n",
+ "chi2 = matched_unmatched_tracks[:,-2]\n",
+ "event_id = matched_unmatched_tracks[:,-3].astype('int')\n",
+ "tracks = scaler(reshapor(matched_unmatched_tracks[:,:-3]), scalerfunc = func, scalor= scalor)\n",
+ "\n",
+ "print(tracks.shape)\n",
+ "\n",
+ "#print(reshapor_inv(tset_matched).shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "array_len = truth.shape[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "track_with_chi = np.zeros((array_len, 8, 4))\n",
+ "track_with_chi[:,:,:3] += tracks[:,:,:]\n",
+ "\n",
+ "for track in range(array_len):\n",
+ " for t in range(8):\n",
+ " track_with_chi[track,t,3] = chi2[track]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "truth_and_ev_id = np.zeros((array_len,2))\n",
+ "\n",
+ "truth_and_ev_id[:,0] += truth[:]\n",
+ "truth_and_ev_id[:,1] += event_id[:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train, X_test, Y_train, Y_test = skl.model_selection.train_test_split(track_with_chi, truth_and_ev_id, shuffle=True, train_size=0.8)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train_input = X_train[:,:4,:3]\n",
+ "X_test_input = X_test[:,:4,:3]\n",
+ "XY_train_proposed = X_train[:,4:,:]\n",
+ "XY_test_proposed = X_test[:,4:,:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filepath = \"trained_models/keras_RNN.h5\"\n",
+ "model_4_to_4 = load_model(filepath)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "prediction_train = reshapor(model_4_to_4.predict(X_train_input[:,:,:3]))\n",
+ "prediction_test = reshapor(model_4_to_4.predict(X_test_input[:,:,:3]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "XY_train_proposed[:,:,:3] -= prediction_train[:,:,:]\n",
+ "XY_test_proposed[:,:,:3] -= prediction_test[:,:,:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "XY_test_proposed.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train = XY_train_proposed\n",
+ "y_train = Y_train[:,0]\n",
+ "X_test = XY_test_proposed\n",
+ "y_test = Y_test[:,0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# truncate and pad input sequences\n",
+ "max_review_length = 4\n",
+ "filepath = \"trained_models/keras_model_classifier2.h5\"\n",
+ "\n",
+ "callbacks = [\n",
+ " EarlyStopping(monitor='val_loss', patience=20, min_delta=0.0003),\n",
+ " ModelCheckpoint(filepath, monitor='val_loss', save_best_only=True),\n",
+ " History(),\n",
+ " TensorBoard(log_dir= filepath[:-3] + \"/logs\", histogram_freq=1, batch_size=32)\n",
+ "]\n",
+ "\n",
+ "#\n",
+ "\n",
+ "# create the model\n",
+ "model = Sequential()\n",
+ "#model.add(Dense(12, input_shape=(4,4)))\n",
+ "model.add(LSTM(50, return_sequences=True, input_shape=(4,4), activation = 'relu'))\n",
+ "model.add(BatchNormalization())\n",
+ "model.add(LSTM(50, return_sequences=True, activation = 'relu'))\n",
+ "model.add(BatchNormalization())\n",
+ "model.add(LSTM(50, return_sequences=False, activation = 'relu'))\n",
+ "model.add(BatchNormalization())\n",
+ "#model.add(LSTM(40, return_sequences=True, activation = 'relu')) \n",
+ "#model.add(Dropout(0.5))\n",
+ "#model.add(LSTM(4, activation = 'relu')) \n",
+ "#model.add(BatchNormalization())\n",
+ "model.add(Dense(100, activation='relu'))\n",
+ "model.add(Dense(1, activation='sigmoid'))\n",
+ "model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
+ "print(model.summary())\n",
+ "model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=500, batch_size=50, callbacks= callbacks, verbose = 2)\n",
+ "model = load_model(filepath)\n",
+ "# Final evaluation of the model\n",
+ "scores = model.evaluate(X_test, y_test, verbose=0)\n",
+ "print(\"Accuracy: %.2f%%\" % (scores[1]*100))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model = load_model(filepath)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions = model.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train = reshapor_inv(X_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "Y_train"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "Y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "test_data = np.random.random(size=(1000, 15))\n",
+ "np.all(test_data == reshapor_inv(reshapor(test_data)))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_test = reshapor_inv(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# fit model no training data\n",
+ "modelx = XGBClassifier(max_depth=3, n_estimators=1000, learning_rate=0.05).fit(X_train, y_train, verbose = 1)\n",
+ "\n",
+ "predictions = modelx.predict_proba(X_test)\n",
+ "\n",
+ "pkl.dump(modelx , open(\"trained_models/XGB_Classifier2.xgb\" , \"wb\" ) )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_true = predictions[:, 1]\n",
+ "predictions_false = predictions[:, 0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cut = 0.6\n",
+ "predictions_hard = (predictions_true > cut).astype(int)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_hard"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_true"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y_test"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "n_bins = 20\n",
+ "\n",
+ "plt.figure()\n",
+ "n, bins, patches = plt.hist(predictions_true[y_test == 1], bins=20, alpha=0.5, normed=True)\n",
+ "plt.hist(predictions_true[y_test == 0], bins=bins, alpha=0.5, normed=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fpr, tpr, _ = skl.metrics.roc_curve(y_test, predictions_true, pos_label=1)\n",
+ "roc_auc = skl.metrics.roc_auc_score(y_true=y_test, y_score=predictions_true)\n",
+ "print(\"ROC AUC:\", roc_auc)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "plt.figure()\n",
+ "plt.plot(fpr, tpr)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Classifier.ipynb b/Classifier.ipynb
new file mode 100644
index 0000000..9aa6539
--- /dev/null
+++ b/Classifier.ipynb
@@ -0,0 +1,2771 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
+ " from ._conv import register_converters as _register_converters\n",
+ "Using TensorFlow backend.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib as mpl\n",
+ "import random\n",
+ "import math\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import tensorflow as tf\n",
+ "from tensorflow.python.framework import ops\n",
+ "from sklearn import preprocessing\n",
+ "import pickle as pkl\n",
+ "from pathlib import Path\n",
+ "from keras.datasets import imdb\n",
+ "from keras.models import Sequential\n",
+ "from keras.layers import Dense\n",
+ "from keras.layers import LSTM\n",
+ "from keras.layers import GRU\n",
+ "from keras.layers import Dropout, BatchNormalization, Bidirectional\n",
+ "from keras.layers import ConvLSTM2D\n",
+ "from keras.layers import Conv1D\n",
+ "#from keras.layers.convolutional import Conv1D\n",
+ "#from keras.layers.convolutional import MaxPooling1D\n",
+ "from keras.layers.embeddings import Embedding\n",
+ "from keras.preprocessing import sequence\n",
+ "from keras.callbacks import History\n",
+ "from keras.callbacks import EarlyStopping\n",
+ "from keras.callbacks import ModelCheckpoint\n",
+ "from keras.callbacks import TensorBoard\n",
+ "from keras.models import load_model\n",
+ "import keras.backend as K\n",
+ "from keras.losses import mean_squared_error\n",
+ "\n",
+ "import xgboost as xgb\n",
+ "from xgboost import XGBClassifier\n",
+ "from xgboost import plot_tree\n",
+ "from sklearn.metrics import accuracy_score\n",
+ "import graphviz\n",
+ "\n",
+ "import sklearn as skl\n",
+ "\n",
+ "#import seaborn as sns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " x1 | \n",
+ " y1 | \n",
+ " z1 | \n",
+ " x2 | \n",
+ " y2 | \n",
+ " z2 | \n",
+ " x3 | \n",
+ " y3 | \n",
+ " z3 | \n",
+ " x4 | \n",
+ " ... | \n",
+ " z6 | \n",
+ " x7 | \n",
+ " y7 | \n",
+ " z7 | \n",
+ " x8 | \n",
+ " y8 | \n",
+ " z8 | \n",
+ " event | \n",
+ " trackchi2 | \n",
+ " matched | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " -2.248582 | \n",
+ " 23.380732 | \n",
+ " -6.040000 | \n",
+ " -6.489999 | \n",
+ " 28.598572 | \n",
+ " -5.640000 | \n",
+ " -21.724771 | \n",
+ " 67.052704 | \n",
+ " -3.240000 | \n",
+ " -22.225971 | \n",
+ " ... | \n",
+ " 7.559999 | \n",
+ " 28.802656 | \n",
+ " 3.901462 | \n",
+ " 6.040000 | \n",
+ " 21.421392 | \n",
+ " 6.978845 | \n",
+ " 5.640000 | \n",
+ " 124.0 | \n",
+ " 13.396379 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -4.040000 | \n",
+ " 26.880571 | \n",
+ " -9.817033 | \n",
+ " -4.840000 | \n",
+ " 19.684010 | \n",
+ " -11.173258 | \n",
+ " -5.000000 | \n",
+ " 220.0 | \n",
+ " 3.036235 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -4.040000 | \n",
+ " 26.880571 | \n",
+ " -9.817033 | \n",
+ " -4.840000 | \n",
+ " 19.684010 | \n",
+ " -11.173258 | \n",
+ " -5.000000 | \n",
+ " 220.0 | \n",
+ " 3.036235 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -3.080000 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -1.400000 | \n",
+ " 22.469944 | \n",
+ " -4.447415 | \n",
+ " -1.080000 | \n",
+ " 220.0 | \n",
+ " 25.033289 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " -20.411108 | \n",
+ " -9.417887 | \n",
+ " 4.760000 | \n",
+ " -27.813803 | \n",
+ " -6.944843 | \n",
+ " 4.760000 | \n",
+ " -66.736946 | \n",
+ " 22.903200 | \n",
+ " 4.360000 | \n",
+ " -74.096100 | \n",
+ " ... | \n",
+ " -3.080000 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -1.400000 | \n",
+ " 22.469944 | \n",
+ " -4.447415 | \n",
+ " -1.080000 | \n",
+ " 220.0 | \n",
+ " 25.033289 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " -6.018011 | \n",
+ " 21.819384 | \n",
+ " -23.240000 | \n",
+ " -10.009998 | \n",
+ " 28.598572 | \n",
+ " -23.320000 | \n",
+ " -25.356653 | \n",
+ " 66.079544 | \n",
+ " -23.639999 | \n",
+ " -28.309521 | \n",
+ " ... | \n",
+ " -6.920000 | \n",
+ " 25.644503 | \n",
+ " -13.621260 | \n",
+ " -6.200001 | \n",
+ " 20.724909 | \n",
+ " -8.660306 | \n",
+ " -6.200001 | \n",
+ " 312.0 | \n",
+ " 27.834667 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " -6.018011 | \n",
+ " 21.819384 | \n",
+ " -23.240000 | \n",
+ " -10.009998 | \n",
+ " 28.598572 | \n",
+ " -23.320000 | \n",
+ " -25.356653 | \n",
+ " 66.079544 | \n",
+ " -23.639999 | \n",
+ " -28.309521 | \n",
+ " ... | \n",
+ " -6.920000 | \n",
+ " 25.644503 | \n",
+ " -13.621260 | \n",
+ " -6.200001 | \n",
+ " 20.724909 | \n",
+ " -8.660306 | \n",
+ " -6.200001 | \n",
+ " 312.0 | \n",
+ " 27.834667 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " -6.018011 | \n",
+ " 21.819384 | \n",
+ " -23.240000 | \n",
+ " -10.009998 | \n",
+ " 28.598572 | \n",
+ " -23.320000 | \n",
+ " -25.356653 | \n",
+ " 66.079544 | \n",
+ " -23.639999 | \n",
+ " -28.309521 | \n",
+ " ... | \n",
+ " -18.360001 | \n",
+ " 25.490572 | \n",
+ " -16.829796 | \n",
+ " -18.040001 | \n",
+ " 19.622780 | \n",
+ " -11.321079 | \n",
+ " -18.040001 | \n",
+ " 312.0 | \n",
+ " 7.292468 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 6.590816 | \n",
+ " 21.582119 | \n",
+ " -40.680000 | \n",
+ " 9.941264 | \n",
+ " 28.127028 | \n",
+ " -40.840000 | \n",
+ " 33.714462 | \n",
+ " 61.815155 | \n",
+ " -41.639999 | \n",
+ " 42.568947 | \n",
+ " ... | \n",
+ " -53.320000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " -54.439999 | \n",
+ " -5.408250 | \n",
+ " -22.071955 | \n",
+ " -54.520000 | \n",
+ " 326.0 | \n",
+ " 10.081528 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 20.043732 | \n",
+ " 10.304811 | \n",
+ " -22.680000 | \n",
+ " 26.009144 | \n",
+ " 12.499014 | \n",
+ " -22.440001 | \n",
+ " 68.274330 | \n",
+ " 17.165602 | \n",
+ " -21.240000 | \n",
+ " 80.994446 | \n",
+ " ... | \n",
+ " -33.239998 | \n",
+ " -20.296682 | \n",
+ " -20.603376 | \n",
+ " -32.279999 | \n",
+ " -17.410870 | \n",
+ " -16.661102 | \n",
+ " -32.119999 | \n",
+ " 352.0 | \n",
+ " 43.565620 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 20.043732 | \n",
+ " 10.304811 | \n",
+ " -22.680000 | \n",
+ " 26.009144 | \n",
+ " 12.499014 | \n",
+ " -22.440001 | \n",
+ " 68.274330 | \n",
+ " 17.165602 | \n",
+ " -21.240000 | \n",
+ " 80.994446 | \n",
+ " ... | \n",
+ " -10.840000 | \n",
+ " -21.332224 | \n",
+ " -19.851011 | \n",
+ " -10.440001 | \n",
+ " -17.870090 | \n",
+ " -15.552447 | \n",
+ " -10.440001 | \n",
+ " 352.0 | \n",
+ " 16.855164 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " -16.069820 | \n",
+ " 17.655788 | \n",
+ " 15.719999 | \n",
+ " -21.218962 | \n",
+ " 19.933302 | \n",
+ " 15.559999 | \n",
+ " -57.205452 | \n",
+ " 42.342068 | \n",
+ " 14.440001 | \n",
+ " -65.752090 | \n",
+ " ... | \n",
+ " 11.000000 | \n",
+ " 27.442982 | \n",
+ " 8.086111 | \n",
+ " 10.280000 | \n",
+ " 20.747869 | \n",
+ " 8.604874 | \n",
+ " 10.120000 | \n",
+ " 539.0 | \n",
+ " 16.259047 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " -6.313652 | \n",
+ " 21.696924 | \n",
+ " 16.039999 | \n",
+ " -4.489999 | \n",
+ " 28.598572 | \n",
+ " 15.639999 | \n",
+ " 15.484889 | \n",
+ " 68.724678 | \n",
+ " 14.120000 | \n",
+ " 23.103405 | \n",
+ " ... | \n",
+ " 28.520000 | \n",
+ " -7.870180 | \n",
+ " -29.631758 | \n",
+ " 31.000000 | \n",
+ " -9.177679 | \n",
+ " -20.510605 | \n",
+ " 31.799999 | \n",
+ " 668.0 | \n",
+ " 37.193771 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " 11.559999 | \n",
+ " 4.249999 | \n",
+ " -28.598572 | \n",
+ " 11.160000 | \n",
+ " 0.726311 | \n",
+ " -24.612972 | \n",
+ " 11.080000 | \n",
+ " 891.0 | \n",
+ " 19.876373 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -3.800000 | \n",
+ " 5.770000 | \n",
+ " -28.598572 | \n",
+ " -5.240001 | \n",
+ " 1.287747 | \n",
+ " -23.778723 | \n",
+ " -5.400001 | \n",
+ " 891.0 | \n",
+ " 7.583350 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -3.800000 | \n",
+ " 5.770000 | \n",
+ " -28.598572 | \n",
+ " -5.240001 | \n",
+ " 1.287747 | \n",
+ " -23.778723 | \n",
+ " -5.400001 | \n",
+ " 891.0 | \n",
+ " 7.583350 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -3.320000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " -2.840000 | \n",
+ " 2.544224 | \n",
+ " -23.258274 | \n",
+ " -2.680000 | \n",
+ " 891.0 | \n",
+ " 4.611990 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " -10.680000 | \n",
+ " -24.584473 | \n",
+ " 17.488115 | \n",
+ " -10.680000 | \n",
+ " -32.935036 | \n",
+ " 62.265152 | \n",
+ " -10.600000 | \n",
+ " -32.243843 | \n",
+ " ... | \n",
+ " -32.919998 | \n",
+ " 11.049999 | \n",
+ " -28.598572 | \n",
+ " -35.720001 | \n",
+ " 4.244162 | \n",
+ " -22.554136 | \n",
+ " -36.119999 | \n",
+ " 891.0 | \n",
+ " 35.642284 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " -3.412670 | \n",
+ " -22.898550 | \n",
+ " -22.360001 | \n",
+ " -5.110001 | \n",
+ " -28.598572 | \n",
+ " -21.880001 | \n",
+ " -25.453243 | \n",
+ " -66.053665 | \n",
+ " -19.160000 | \n",
+ " -33.054714 | \n",
+ " ... | \n",
+ " -10.040001 | \n",
+ " -6.569999 | \n",
+ " 28.598572 | \n",
+ " -9.800000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " -9.720000 | \n",
+ " 1026.0 | \n",
+ " 36.178505 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -48.759998 | \n",
+ " -19.520025 | \n",
+ " -21.167650 | \n",
+ " -49.799999 | \n",
+ " -17.012880 | \n",
+ " -17.621937 | \n",
+ " -49.880001 | \n",
+ " 1027.0 | \n",
+ " 7.386358 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -56.200001 | \n",
+ " -17.319500 | \n",
+ " -22.766426 | \n",
+ " -56.680000 | \n",
+ " -14.425314 | \n",
+ " -18.336964 | \n",
+ " -56.840000 | \n",
+ " 1027.0 | \n",
+ " 16.478861 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 18.359924 | \n",
+ " 14.369882 | \n",
+ " -43.239998 | \n",
+ " 24.303370 | \n",
+ " 17.748846 | \n",
+ " -43.480000 | \n",
+ " 64.025154 | \n",
+ " 29.886627 | \n",
+ " -44.200001 | \n",
+ " 76.569237 | \n",
+ " ... | \n",
+ " -56.200001 | \n",
+ " -17.319500 | \n",
+ " -22.766426 | \n",
+ " -56.680000 | \n",
+ " -14.425314 | \n",
+ " -18.336964 | \n",
+ " -56.840000 | \n",
+ " 1027.0 | \n",
+ " 16.478861 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ " 1067.0 | \n",
+ " 14.580906 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ " 1067.0 | \n",
+ " 14.580906 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " -22.102570 | \n",
+ " 5.334340 | \n",
+ " 15.799999 | \n",
+ " -28.289688 | \n",
+ " 5.480215 | \n",
+ " 16.440001 | \n",
+ " -67.813629 | \n",
+ " 18.884949 | \n",
+ " 19.320000 | \n",
+ " -78.018410 | \n",
+ " ... | \n",
+ " 43.400002 | \n",
+ " 24.624746 | \n",
+ " 16.759747 | \n",
+ " 44.840000 | \n",
+ " 18.849760 | \n",
+ " 13.187316 | \n",
+ " 44.919998 | \n",
+ " 1067.0 | \n",
+ " 14.580906 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " -17.548027 | \n",
+ " 17.043495 | \n",
+ " 14.920000 | \n",
+ " -19.342041 | \n",
+ " 21.296963 | \n",
+ " 14.839999 | \n",
+ " -30.440884 | \n",
+ " 63.705154 | \n",
+ " 13.720000 | \n",
+ " -31.450989 | \n",
+ " ... | \n",
+ " -27.719999 | \n",
+ " 16.429581 | \n",
+ " -23.412991 | \n",
+ " -29.959999 | \n",
+ " 12.226481 | \n",
+ " -19.247751 | \n",
+ " -30.280001 | \n",
+ " 1097.0 | \n",
+ " 44.685917 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " -17.548027 | \n",
+ " 17.043495 | \n",
+ " 14.920000 | \n",
+ " -19.342041 | \n",
+ " 21.296963 | \n",
+ " 14.839999 | \n",
+ " -30.440884 | \n",
+ " 63.705154 | \n",
+ " 13.720000 | \n",
+ " -31.450989 | \n",
+ " ... | \n",
+ " -27.719999 | \n",
+ " 16.429581 | \n",
+ " -23.412991 | \n",
+ " -29.959999 | \n",
+ " 12.226481 | \n",
+ " -19.247751 | \n",
+ " -30.280001 | \n",
+ " 1097.0 | \n",
+ " 44.685917 | \n",
+ " 0.0 | \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",
+ " 109791 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ " 19090.0 | \n",
+ " 23.234200 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109792 | \n",
+ " -2.969208 | \n",
+ " -23.082239 | \n",
+ " 26.760000 | \n",
+ " -6.150001 | \n",
+ " -28.598572 | \n",
+ " 26.760000 | \n",
+ " -33.783745 | \n",
+ " -61.775158 | \n",
+ " 27.320000 | \n",
+ " -44.113327 | \n",
+ " ... | \n",
+ " 53.799999 | \n",
+ " 14.924809 | \n",
+ " 24.506271 | \n",
+ " 54.840000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " 55.160000 | \n",
+ " 19090.0 | \n",
+ " 23.234200 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109793 | \n",
+ " -19.622780 | \n",
+ " 11.321079 | \n",
+ " 12.679999 | \n",
+ " -26.435587 | \n",
+ " 11.186554 | \n",
+ " 12.599999 | \n",
+ " -67.523758 | \n",
+ " 19.966785 | \n",
+ " 11.960000 | \n",
+ " -78.462158 | \n",
+ " ... | \n",
+ " -21.480000 | \n",
+ " 20.102518 | \n",
+ " 20.744446 | \n",
+ " -22.520000 | \n",
+ " 13.834032 | \n",
+ " 18.581881 | \n",
+ " -22.520000 | \n",
+ " 19109.0 | \n",
+ " 29.602116 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109794 | \n",
+ " 8.309232 | \n",
+ " -20.870329 | \n",
+ " 10.360000 | \n",
+ " 14.487940 | \n",
+ " -24.823675 | \n",
+ " 10.440000 | \n",
+ " 45.608902 | \n",
+ " -53.938618 | \n",
+ " 11.000000 | \n",
+ " 52.103645 | \n",
+ " ... | \n",
+ " -4.840000 | \n",
+ " -27.986851 | \n",
+ " -6.412251 | \n",
+ " -5.400001 | \n",
+ " -20.686640 | \n",
+ " -8.752694 | \n",
+ " -5.400001 | \n",
+ " 19130.0 | \n",
+ " 35.618042 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109795 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 38.599998 | \n",
+ " -26.262537 | \n",
+ " 11.719147 | \n",
+ " 37.959999 | \n",
+ " -20.571835 | \n",
+ " 9.029858 | \n",
+ " 37.879997 | \n",
+ " 19146.0 | \n",
+ " 29.943666 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109796 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 43.320000 | \n",
+ " -26.336700 | \n",
+ " 11.490892 | \n",
+ " 42.520000 | \n",
+ " -20.602449 | \n",
+ " 8.955948 | \n",
+ " 42.439999 | \n",
+ " 19146.0 | \n",
+ " 34.557800 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " 109797 | \n",
+ " 15.478537 | \n",
+ " -17.900705 | \n",
+ " 34.200001 | \n",
+ " 19.212601 | \n",
+ " -21.391008 | \n",
+ " 34.360001 | \n",
+ " 46.061451 | \n",
+ " -53.486069 | \n",
+ " 35.000000 | \n",
+ " 51.978550 | \n",
+ " ... | \n",
+ " 45.160000 | \n",
+ " -26.460308 | \n",
+ " 11.110470 | \n",
+ " 45.720001 | \n",
+ " -20.755524 | \n",
+ " 8.586395 | \n",
+ " 45.720001 | \n",
+ " 19146.0 | \n",
+ " 17.682192 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109798 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109799 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109800 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109801 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109802 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109803 | \n",
+ " 0.308435 | \n",
+ " 24.184366 | \n",
+ " 19.080000 | \n",
+ " 2.070001 | \n",
+ " 28.598572 | \n",
+ " 19.000000 | \n",
+ " 40.157688 | \n",
+ " 58.095158 | \n",
+ " 18.439999 | \n",
+ " 58.581963 | \n",
+ " ... | \n",
+ " 16.680000 | \n",
+ " 7.690000 | \n",
+ " -28.598572 | \n",
+ " 12.679999 | \n",
+ " 2.913775 | \n",
+ " -23.105200 | \n",
+ " 11.880000 | \n",
+ " 19171.0 | \n",
+ " 15.471778 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109804 | \n",
+ " -8.882037 | \n",
+ " -20.633064 | \n",
+ " -6.040000 | \n",
+ " -6.230000 | \n",
+ " -28.598572 | \n",
+ " -5.800000 | \n",
+ " -1.250000 | \n",
+ " -70.390724 | \n",
+ " -4.680000 | \n",
+ " -2.370000 | \n",
+ " ... | \n",
+ " -11.480000 | \n",
+ " -25.941158 | \n",
+ " 12.708245 | \n",
+ " -10.840000 | \n",
+ " -21.857651 | \n",
+ " 5.925623 | \n",
+ " -10.520000 | \n",
+ " 19219.0 | \n",
+ " 32.846611 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109805 | \n",
+ " -9.713529 | \n",
+ " 20.288651 | \n",
+ " 35.320000 | \n",
+ " -12.416857 | \n",
+ " 26.328405 | \n",
+ " 35.400002 | \n",
+ " -10.109999 | \n",
+ " 70.390724 | \n",
+ " 34.279999 | \n",
+ " -1.789999 | \n",
+ " ... | \n",
+ " 42.279999 | \n",
+ " 28.314409 | \n",
+ " -5.404131 | \n",
+ " 47.400002 | \n",
+ " 22.531174 | \n",
+ " -4.299595 | \n",
+ " 48.200001 | \n",
+ " 19260.0 | \n",
+ " 9.661584 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109806 | \n",
+ " -9.713529 | \n",
+ " 20.288651 | \n",
+ " 35.320000 | \n",
+ " -12.416857 | \n",
+ " 26.328405 | \n",
+ " 35.400002 | \n",
+ " -10.109999 | \n",
+ " 70.390724 | \n",
+ " 34.279999 | \n",
+ " -1.789999 | \n",
+ " ... | \n",
+ " 42.279999 | \n",
+ " 28.314409 | \n",
+ " -5.404131 | \n",
+ " 47.400002 | \n",
+ " 22.531174 | \n",
+ " -4.299595 | \n",
+ " 48.200001 | \n",
+ " 19260.0 | \n",
+ " 9.661584 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109807 | \n",
+ " -9.713529 | \n",
+ " 20.288651 | \n",
+ " 35.320000 | \n",
+ " -12.416857 | \n",
+ " 26.328405 | \n",
+ " 35.400002 | \n",
+ " -10.109999 | \n",
+ " 70.390724 | \n",
+ " 34.279999 | \n",
+ " -1.789999 | \n",
+ " ... | \n",
+ " 42.279999 | \n",
+ " 28.314409 | \n",
+ " -5.404131 | \n",
+ " 47.400002 | \n",
+ " 22.531174 | \n",
+ " -4.299595 | \n",
+ " 48.200001 | \n",
+ " 19260.0 | \n",
+ " 9.661584 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109808 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ " 19518.0 | \n",
+ " 11.021622 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109809 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ " 19518.0 | \n",
+ " 11.021622 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109810 | \n",
+ " -2.082284 | \n",
+ " -23.449615 | \n",
+ " -2.920000 | \n",
+ " 0.809999 | \n",
+ " -28.598572 | \n",
+ " -2.520000 | \n",
+ " 15.929216 | \n",
+ " -68.605621 | \n",
+ " 0.280000 | \n",
+ " 18.170271 | \n",
+ " ... | \n",
+ " 42.759998 | \n",
+ " -27.993032 | \n",
+ " 6.393229 | \n",
+ " 46.040001 | \n",
+ " -23.510843 | \n",
+ " 1.934464 | \n",
+ " 46.439999 | \n",
+ " 19518.0 | \n",
+ " 11.021622 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109811 | \n",
+ " -19.921274 | \n",
+ " -10.600453 | \n",
+ " 19.559999 | \n",
+ " -24.649467 | \n",
+ " -16.683662 | \n",
+ " 19.400000 | \n",
+ " -56.025154 | \n",
+ " -43.743034 | \n",
+ " 18.840000 | \n",
+ " -65.964081 | \n",
+ " ... | \n",
+ " 9.959999 | \n",
+ " -0.570000 | \n",
+ " 28.598572 | \n",
+ " 8.599999 | \n",
+ " -2.470313 | \n",
+ " 23.288887 | \n",
+ " 8.360000 | \n",
+ " 19551.0 | \n",
+ " 7.543967 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109812 | \n",
+ " -19.921274 | \n",
+ " -10.600453 | \n",
+ " 19.559999 | \n",
+ " -24.649467 | \n",
+ " -16.683662 | \n",
+ " 19.400000 | \n",
+ " -56.025154 | \n",
+ " -43.743034 | \n",
+ " 18.840000 | \n",
+ " -65.964081 | \n",
+ " ... | \n",
+ " 9.959999 | \n",
+ " -0.570000 | \n",
+ " 28.598572 | \n",
+ " 8.599999 | \n",
+ " -2.470313 | \n",
+ " 23.288887 | \n",
+ " 8.360000 | \n",
+ " 19551.0 | \n",
+ " 7.543967 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109813 | \n",
+ " 1.860553 | \n",
+ " 23.541458 | \n",
+ " -11.480000 | \n",
+ " 3.430001 | \n",
+ " 28.598572 | \n",
+ " -11.320001 | \n",
+ " 25.453243 | \n",
+ " 66.053665 | \n",
+ " -10.040001 | \n",
+ " 34.135880 | \n",
+ " ... | \n",
+ " -5.640000 | \n",
+ " 0.570000 | \n",
+ " -28.598572 | \n",
+ " -6.120000 | \n",
+ " -0.382345 | \n",
+ " -24.153751 | \n",
+ " -6.200001 | \n",
+ " 19617.0 | \n",
+ " 8.062763 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109814 | \n",
+ " 23.174084 | \n",
+ " -2.747478 | \n",
+ " 11.320000 | \n",
+ " 27.646933 | \n",
+ " -7.458413 | \n",
+ " 11.559999 | \n",
+ " 53.698204 | \n",
+ " -45.849316 | \n",
+ " 13.320000 | \n",
+ " 58.983761 | \n",
+ " ... | \n",
+ " 40.439999 | \n",
+ " -11.704922 | \n",
+ " 26.845655 | \n",
+ " 41.320000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " 41.480000 | \n",
+ " 19682.0 | \n",
+ " 17.139938 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109815 | \n",
+ " 23.174084 | \n",
+ " -2.747478 | \n",
+ " 11.320000 | \n",
+ " 27.646933 | \n",
+ " -7.458413 | \n",
+ " 11.559999 | \n",
+ " 53.698204 | \n",
+ " -45.849316 | \n",
+ " 13.320000 | \n",
+ " 58.983761 | \n",
+ " ... | \n",
+ " 40.439999 | \n",
+ " -11.704922 | \n",
+ " 26.845655 | \n",
+ " 41.320000 | \n",
+ " -4.835445 | \n",
+ " 22.309217 | \n",
+ " 41.480000 | \n",
+ " 19682.0 | \n",
+ " 17.139938 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109816 | \n",
+ " -12.374302 | \n",
+ " 19.186522 | \n",
+ " -29.720001 | \n",
+ " -16.429581 | \n",
+ " 23.412991 | \n",
+ " -29.799999 | \n",
+ " -33.766418 | \n",
+ " 61.785152 | \n",
+ " -30.760000 | \n",
+ " -34.045780 | \n",
+ " ... | \n",
+ " -45.639999 | \n",
+ " 29.303265 | \n",
+ " -2.360749 | \n",
+ " -48.040001 | \n",
+ " 23.847605 | \n",
+ " -1.121449 | \n",
+ " -48.279999 | \n",
+ " 19721.0 | \n",
+ " 11.005083 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109817 | \n",
+ " -20.939211 | \n",
+ " 8.142934 | \n",
+ " -22.440001 | \n",
+ " -26.410866 | \n",
+ " 11.262639 | \n",
+ " -22.760000 | \n",
+ " -59.615158 | \n",
+ " 37.524971 | \n",
+ " -24.840000 | \n",
+ " -67.946777 | \n",
+ " ... | \n",
+ " -56.279999 | \n",
+ " 26.410866 | \n",
+ " -11.262639 | \n",
+ " -57.720001 | \n",
+ " 20.173845 | \n",
+ " -9.990692 | \n",
+ " -57.959999 | \n",
+ " 19787.0 | \n",
+ " 7.796933 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109818 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -25.080000 | \n",
+ " -20.053978 | \n",
+ " 20.779713 | \n",
+ " -25.560001 | \n",
+ " -16.661102 | \n",
+ " 17.410870 | \n",
+ " -25.560001 | \n",
+ " 19826.0 | \n",
+ " 19.236219 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109819 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -25.080000 | \n",
+ " -20.053978 | \n",
+ " 20.779713 | \n",
+ " -25.560001 | \n",
+ " -16.661102 | \n",
+ " 17.410870 | \n",
+ " -25.560001 | \n",
+ " 19826.0 | \n",
+ " 19.236219 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " 109820 | \n",
+ " 10.748274 | \n",
+ " -19.860044 | \n",
+ " -38.520000 | \n",
+ " 13.322956 | \n",
+ " -25.670086 | \n",
+ " -38.439999 | \n",
+ " 25.279379 | \n",
+ " -66.100250 | \n",
+ " -38.040001 | \n",
+ " 26.593647 | \n",
+ " ... | \n",
+ " -9.080000 | \n",
+ " -20.765911 | \n",
+ " 20.262461 | \n",
+ " -7.720000 | \n",
+ " -17.769758 | \n",
+ " 16.951651 | \n",
+ " -7.560000 | \n",
+ " 19826.0 | \n",
+ " 20.784391 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
109821 rows × 27 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " x1 y1 z1 x2 y2 z2 \\\n",
+ "0 -2.248582 23.380732 -6.040000 -6.489999 28.598572 -5.640000 \n",
+ "1 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "2 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "3 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "4 -20.411108 -9.417887 4.760000 -27.813803 -6.944843 4.760000 \n",
+ "5 -6.018011 21.819384 -23.240000 -10.009998 28.598572 -23.320000 \n",
+ "6 -6.018011 21.819384 -23.240000 -10.009998 28.598572 -23.320000 \n",
+ "7 -6.018011 21.819384 -23.240000 -10.009998 28.598572 -23.320000 \n",
+ "8 6.590816 21.582119 -40.680000 9.941264 28.127028 -40.840000 \n",
+ "9 20.043732 10.304811 -22.680000 26.009144 12.499014 -22.440001 \n",
+ "10 20.043732 10.304811 -22.680000 26.009144 12.499014 -22.440001 \n",
+ "11 -16.069820 17.655788 15.719999 -21.218962 19.933302 15.559999 \n",
+ "12 -6.313652 21.696924 16.039999 -4.489999 28.598572 15.639999 \n",
+ "13 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "14 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "15 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "16 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "17 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "18 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "19 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "20 -20.755524 8.586395 -10.680000 -24.584473 17.488115 -10.680000 \n",
+ "21 -3.412670 -22.898550 -22.360001 -5.110001 -28.598572 -21.880001 \n",
+ "22 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "23 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "24 18.359924 14.369882 -43.239998 24.303370 17.748846 -43.480000 \n",
+ "25 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "26 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "27 -22.102570 5.334340 15.799999 -28.289688 5.480215 16.440001 \n",
+ "28 -17.548027 17.043495 14.920000 -19.342041 21.296963 14.839999 \n",
+ "29 -17.548027 17.043495 14.920000 -19.342041 21.296963 14.839999 \n",
+ "... ... ... ... ... ... ... \n",
+ "109791 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "109792 -2.969208 -23.082239 26.760000 -6.150001 -28.598572 26.760000 \n",
+ "109793 -19.622780 11.321079 12.679999 -26.435587 11.186554 12.599999 \n",
+ "109794 8.309232 -20.870329 10.360000 14.487940 -24.823675 10.440000 \n",
+ "109795 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "109796 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "109797 15.478537 -17.900705 34.200001 19.212601 -21.391008 34.360001 \n",
+ "109798 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109799 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109800 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109801 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109802 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109803 0.308435 24.184366 19.080000 2.070001 28.598572 19.000000 \n",
+ "109804 -8.882037 -20.633064 -6.040000 -6.230000 -28.598572 -5.800000 \n",
+ "109805 -9.713529 20.288651 35.320000 -12.416857 26.328405 35.400002 \n",
+ "109806 -9.713529 20.288651 35.320000 -12.416857 26.328405 35.400002 \n",
+ "109807 -9.713529 20.288651 35.320000 -12.416857 26.328405 35.400002 \n",
+ "109808 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "109809 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "109810 -2.082284 -23.449615 -2.920000 0.809999 -28.598572 -2.520000 \n",
+ "109811 -19.921274 -10.600453 19.559999 -24.649467 -16.683662 19.400000 \n",
+ "109812 -19.921274 -10.600453 19.559999 -24.649467 -16.683662 19.400000 \n",
+ "109813 1.860553 23.541458 -11.480000 3.430001 28.598572 -11.320001 \n",
+ "109814 23.174084 -2.747478 11.320000 27.646933 -7.458413 11.559999 \n",
+ "109815 23.174084 -2.747478 11.320000 27.646933 -7.458413 11.559999 \n",
+ "109816 -12.374302 19.186522 -29.720001 -16.429581 23.412991 -29.799999 \n",
+ "109817 -20.939211 8.142934 -22.440001 -26.410866 11.262639 -22.760000 \n",
+ "109818 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "109819 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "109820 10.748274 -19.860044 -38.520000 13.322956 -25.670086 -38.439999 \n",
+ "\n",
+ " x3 y3 z3 x4 ... z6 \\\n",
+ "0 -21.724771 67.052704 -3.240000 -22.225971 ... 7.559999 \n",
+ "1 -66.736946 22.903200 4.360000 -74.096100 ... -4.040000 \n",
+ "2 -66.736946 22.903200 4.360000 -74.096100 ... -4.040000 \n",
+ "3 -66.736946 22.903200 4.360000 -74.096100 ... -3.080000 \n",
+ "4 -66.736946 22.903200 4.360000 -74.096100 ... -3.080000 \n",
+ "5 -25.356653 66.079544 -23.639999 -28.309521 ... -6.920000 \n",
+ "6 -25.356653 66.079544 -23.639999 -28.309521 ... -6.920000 \n",
+ "7 -25.356653 66.079544 -23.639999 -28.309521 ... -18.360001 \n",
+ "8 33.714462 61.815155 -41.639999 42.568947 ... -53.320000 \n",
+ "9 68.274330 17.165602 -21.240000 80.994446 ... -33.239998 \n",
+ "10 68.274330 17.165602 -21.240000 80.994446 ... -10.840000 \n",
+ "11 -57.205452 42.342068 14.440001 -65.752090 ... 11.000000 \n",
+ "12 15.484889 68.724678 14.120000 23.103405 ... 28.520000 \n",
+ "13 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "14 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "15 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "16 -32.935036 62.265152 -10.600000 -32.243843 ... 11.559999 \n",
+ "17 -32.935036 62.265152 -10.600000 -32.243843 ... -3.800000 \n",
+ "18 -32.935036 62.265152 -10.600000 -32.243843 ... -3.800000 \n",
+ "19 -32.935036 62.265152 -10.600000 -32.243843 ... -3.320000 \n",
+ "20 -32.935036 62.265152 -10.600000 -32.243843 ... -32.919998 \n",
+ "21 -25.453243 -66.053665 -19.160000 -33.054714 ... -10.040001 \n",
+ "22 64.025154 29.886627 -44.200001 76.569237 ... -48.759998 \n",
+ "23 64.025154 29.886627 -44.200001 76.569237 ... -56.200001 \n",
+ "24 64.025154 29.886627 -44.200001 76.569237 ... -56.200001 \n",
+ "25 -67.813629 18.884949 19.320000 -78.018410 ... 43.400002 \n",
+ "26 -67.813629 18.884949 19.320000 -78.018410 ... 43.400002 \n",
+ "27 -67.813629 18.884949 19.320000 -78.018410 ... 43.400002 \n",
+ "28 -30.440884 63.705154 13.720000 -31.450989 ... -27.719999 \n",
+ "29 -30.440884 63.705154 13.720000 -31.450989 ... -27.719999 \n",
+ "... ... ... ... ... ... ... \n",
+ "109791 -33.783745 -61.775158 27.320000 -44.113327 ... 53.799999 \n",
+ "109792 -33.783745 -61.775158 27.320000 -44.113327 ... 53.799999 \n",
+ "109793 -67.523758 19.966785 11.960000 -78.462158 ... -21.480000 \n",
+ "109794 45.608902 -53.938618 11.000000 52.103645 ... -4.840000 \n",
+ "109795 46.061451 -53.486069 35.000000 51.978550 ... 38.599998 \n",
+ "109796 46.061451 -53.486069 35.000000 51.978550 ... 43.320000 \n",
+ "109797 46.061451 -53.486069 35.000000 51.978550 ... 45.160000 \n",
+ "109798 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109799 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109800 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109801 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109802 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109803 40.157688 58.095158 18.439999 58.581963 ... 16.680000 \n",
+ "109804 -1.250000 -70.390724 -4.680000 -2.370000 ... -11.480000 \n",
+ "109805 -10.109999 70.390724 34.279999 -1.789999 ... 42.279999 \n",
+ "109806 -10.109999 70.390724 34.279999 -1.789999 ... 42.279999 \n",
+ "109807 -10.109999 70.390724 34.279999 -1.789999 ... 42.279999 \n",
+ "109808 15.929216 -68.605621 0.280000 18.170271 ... 42.759998 \n",
+ "109809 15.929216 -68.605621 0.280000 18.170271 ... 42.759998 \n",
+ "109810 15.929216 -68.605621 0.280000 18.170271 ... 42.759998 \n",
+ "109811 -56.025154 -43.743034 18.840000 -65.964081 ... 9.959999 \n",
+ "109812 -56.025154 -43.743034 18.840000 -65.964081 ... 9.959999 \n",
+ "109813 25.453243 66.053665 -10.040001 34.135880 ... -5.640000 \n",
+ "109814 53.698204 -45.849316 13.320000 58.983761 ... 40.439999 \n",
+ "109815 53.698204 -45.849316 13.320000 58.983761 ... 40.439999 \n",
+ "109816 -33.766418 61.785152 -30.760000 -34.045780 ... -45.639999 \n",
+ "109817 -59.615158 37.524971 -24.840000 -67.946777 ... -56.279999 \n",
+ "109818 25.279379 -66.100250 -38.040001 26.593647 ... -25.080000 \n",
+ "109819 25.279379 -66.100250 -38.040001 26.593647 ... -25.080000 \n",
+ "109820 25.279379 -66.100250 -38.040001 26.593647 ... -9.080000 \n",
+ "\n",
+ " x7 y7 z7 x8 y8 z8 \\\n",
+ "0 28.802656 3.901462 6.040000 21.421392 6.978845 5.640000 \n",
+ "1 26.880571 -9.817033 -4.840000 19.684010 -11.173258 -5.000000 \n",
+ "2 26.880571 -9.817033 -4.840000 19.684010 -11.173258 -5.000000 \n",
+ "3 29.303265 -2.360749 -1.400000 22.469944 -4.447415 -1.080000 \n",
+ "4 29.303265 -2.360749 -1.400000 22.469944 -4.447415 -1.080000 \n",
+ "5 25.644503 -13.621260 -6.200001 20.724909 -8.660306 -6.200001 \n",
+ "6 25.644503 -13.621260 -6.200001 20.724909 -8.660306 -6.200001 \n",
+ "7 25.490572 -16.829796 -18.040001 19.622780 -11.321079 -18.040001 \n",
+ "8 -6.150001 -28.598572 -54.439999 -5.408250 -22.071955 -54.520000 \n",
+ "9 -20.296682 -20.603376 -32.279999 -17.410870 -16.661102 -32.119999 \n",
+ "10 -21.332224 -19.851011 -10.440001 -17.870090 -15.552447 -10.440001 \n",
+ "11 27.442982 8.086111 10.280000 20.747869 8.604874 10.120000 \n",
+ "12 -7.870180 -29.631758 31.000000 -9.177679 -20.510605 31.799999 \n",
+ "13 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "14 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "15 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "16 4.249999 -28.598572 11.160000 0.726311 -24.612972 11.080000 \n",
+ "17 5.770000 -28.598572 -5.240001 1.287747 -23.778723 -5.400001 \n",
+ "18 5.770000 -28.598572 -5.240001 1.287747 -23.778723 -5.400001 \n",
+ "19 7.690000 -28.598572 -2.840000 2.544224 -23.258274 -2.680000 \n",
+ "20 11.049999 -28.598572 -35.720001 4.244162 -22.554136 -36.119999 \n",
+ "21 -6.569999 28.598572 -9.800000 -4.835445 22.309217 -9.720000 \n",
+ "22 -19.520025 -21.167650 -49.799999 -17.012880 -17.621937 -49.880001 \n",
+ "23 -17.319500 -22.766426 -56.680000 -14.425314 -18.336964 -56.840000 \n",
+ "24 -17.319500 -22.766426 -56.680000 -14.425314 -18.336964 -56.840000 \n",
+ "25 24.624746 16.759747 44.840000 18.849760 13.187316 44.919998 \n",
+ "26 24.624746 16.759747 44.840000 18.849760 13.187316 44.919998 \n",
+ "27 24.624746 16.759747 44.840000 18.849760 13.187316 44.919998 \n",
+ "28 16.429581 -23.412991 -29.959999 12.226481 -19.247751 -30.280001 \n",
+ "29 16.429581 -23.412991 -29.959999 12.226481 -19.247751 -30.280001 \n",
+ "... ... ... ... ... ... ... \n",
+ "109791 14.924809 24.506271 54.840000 13.834032 18.581881 55.160000 \n",
+ "109792 14.924809 24.506271 54.840000 13.834032 18.581881 55.160000 \n",
+ "109793 20.102518 20.744446 -22.520000 13.834032 18.581881 -22.520000 \n",
+ "109794 -27.986851 -6.412251 -5.400001 -20.686640 -8.752694 -5.400001 \n",
+ "109795 -26.262537 11.719147 37.959999 -20.571835 9.029858 37.879997 \n",
+ "109796 -26.336700 11.490892 42.520000 -20.602449 8.955948 42.439999 \n",
+ "109797 -26.460308 11.110470 45.720001 -20.755524 8.586395 45.720001 \n",
+ "109798 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109799 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109800 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109801 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109802 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109803 7.690000 -28.598572 12.679999 2.913775 -23.105200 11.880000 \n",
+ "109804 -25.941158 12.708245 -10.840000 -21.857651 5.925623 -10.520000 \n",
+ "109805 28.314409 -5.404131 47.400002 22.531174 -4.299595 48.200001 \n",
+ "109806 28.314409 -5.404131 47.400002 22.531174 -4.299595 48.200001 \n",
+ "109807 28.314409 -5.404131 47.400002 22.531174 -4.299595 48.200001 \n",
+ "109808 -27.993032 6.393229 46.040001 -23.510843 1.934464 46.439999 \n",
+ "109809 -27.993032 6.393229 46.040001 -23.510843 1.934464 46.439999 \n",
+ "109810 -27.993032 6.393229 46.040001 -23.510843 1.934464 46.439999 \n",
+ "109811 -0.570000 28.598572 8.599999 -2.470313 23.288887 8.360000 \n",
+ "109812 -0.570000 28.598572 8.599999 -2.470313 23.288887 8.360000 \n",
+ "109813 0.570000 -28.598572 -6.120000 -0.382345 -24.153751 -6.200001 \n",
+ "109814 -11.704922 26.845655 41.320000 -4.835445 22.309217 41.480000 \n",
+ "109815 -11.704922 26.845655 41.320000 -4.835445 22.309217 41.480000 \n",
+ "109816 29.303265 -2.360749 -48.040001 23.847605 -1.121449 -48.279999 \n",
+ "109817 26.410866 -11.262639 -57.720001 20.173845 -9.990692 -57.959999 \n",
+ "109818 -20.053978 20.779713 -25.560001 -16.661102 17.410870 -25.560001 \n",
+ "109819 -20.053978 20.779713 -25.560001 -16.661102 17.410870 -25.560001 \n",
+ "109820 -20.765911 20.262461 -7.720000 -17.769758 16.951651 -7.560000 \n",
+ "\n",
+ " event trackchi2 matched \n",
+ "0 124.0 13.396379 1.0 \n",
+ "1 220.0 3.036235 1.0 \n",
+ "2 220.0 3.036235 1.0 \n",
+ "3 220.0 25.033289 0.0 \n",
+ "4 220.0 25.033289 0.0 \n",
+ "5 312.0 27.834667 0.0 \n",
+ "6 312.0 27.834667 0.0 \n",
+ "7 312.0 7.292468 0.0 \n",
+ "8 326.0 10.081528 1.0 \n",
+ "9 352.0 43.565620 0.0 \n",
+ "10 352.0 16.855164 1.0 \n",
+ "11 539.0 16.259047 0.0 \n",
+ "12 668.0 37.193771 1.0 \n",
+ "13 891.0 19.876373 0.0 \n",
+ "14 891.0 19.876373 0.0 \n",
+ "15 891.0 19.876373 0.0 \n",
+ "16 891.0 19.876373 0.0 \n",
+ "17 891.0 7.583350 0.0 \n",
+ "18 891.0 7.583350 0.0 \n",
+ "19 891.0 4.611990 1.0 \n",
+ "20 891.0 35.642284 0.0 \n",
+ "21 1026.0 36.178505 1.0 \n",
+ "22 1027.0 7.386358 1.0 \n",
+ "23 1027.0 16.478861 0.0 \n",
+ "24 1027.0 16.478861 0.0 \n",
+ "25 1067.0 14.580906 1.0 \n",
+ "26 1067.0 14.580906 1.0 \n",
+ "27 1067.0 14.580906 1.0 \n",
+ "28 1097.0 44.685917 0.0 \n",
+ "29 1097.0 44.685917 0.0 \n",
+ "... ... ... ... \n",
+ "109791 19090.0 23.234200 1.0 \n",
+ "109792 19090.0 23.234200 1.0 \n",
+ "109793 19109.0 29.602116 0.0 \n",
+ "109794 19130.0 35.618042 0.0 \n",
+ "109795 19146.0 29.943666 0.0 \n",
+ "109796 19146.0 34.557800 0.0 \n",
+ "109797 19146.0 17.682192 1.0 \n",
+ "109798 19171.0 15.471778 1.0 \n",
+ "109799 19171.0 15.471778 1.0 \n",
+ "109800 19171.0 15.471778 1.0 \n",
+ "109801 19171.0 15.471778 1.0 \n",
+ "109802 19171.0 15.471778 1.0 \n",
+ "109803 19171.0 15.471778 1.0 \n",
+ "109804 19219.0 32.846611 1.0 \n",
+ "109805 19260.0 9.661584 1.0 \n",
+ "109806 19260.0 9.661584 1.0 \n",
+ "109807 19260.0 9.661584 1.0 \n",
+ "109808 19518.0 11.021622 1.0 \n",
+ "109809 19518.0 11.021622 1.0 \n",
+ "109810 19518.0 11.021622 1.0 \n",
+ "109811 19551.0 7.543967 1.0 \n",
+ "109812 19551.0 7.543967 1.0 \n",
+ "109813 19617.0 8.062763 1.0 \n",
+ "109814 19682.0 17.139938 1.0 \n",
+ "109815 19682.0 17.139938 1.0 \n",
+ "109816 19721.0 11.005083 1.0 \n",
+ "109817 19787.0 7.796933 1.0 \n",
+ "109818 19826.0 19.236219 1.0 \n",
+ "109819 19826.0 19.236219 1.0 \n",
+ "109820 19826.0 20.784391 0.0 \n",
+ "\n",
+ "[109821 rows x 27 columns]"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "matched_unmatched_tracks = pd.read_pickle('matched_8hittracks2.pkl')\n",
+ "matched_unmatched_tracks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\sa_li\\anaconda3\\envs\\rnn-tf-ker\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
+ " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD8CAYAAABw1c+bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAGUhJREFUeJzt3X+QVeWd5/H3x+aXjg5qS7YSUWlKooC0jTYO/giiJAQTV9RggesmJKVBarHKddZywd+S0dFNVhJLtxwyEg2SAQtlhmRI+QszxJQRmtD+QCR0WFY6WNo2iKCidvzuH/fQaa8NHLpvc+l+Pq+qLs55znPOec5p7ueefu45z1VEYGZm6Tik3A0wM7MDy8FvZpYYB7+ZWWIc/GZmiXHwm5klxsFvZpYYB7+ZWWIc/GZmiXHwm5klple5G1DsmGOOiUGDBpW7GWZm3crq1avfiYgBeeoedME/aNAg6urqyt0MM7NuRdL/y1vXXT1mZolx8JuZJcbBb2aWmIOuj9/MDk6ffPIJjY2N7Nq1q9xNSVq/fv0YOHAgvXv37vA2cgW/pAnAT4AK4J8j4u6i5X2BnwOnA83A5IjYlC2rBv4J+FvgU2BURPh/jlk309jYyBFHHMGgQYOQVO7mJCkiaG5uprGxkaqqqg5vZ59dPZIqgAeAC4BhwOWShhVVuxLYFhEnAnOAe7J1ewGPAtMjYjgwFvikw601s7LZtWsXlZWVDv0ykkRlZWWn/+rK08d/BtAQERsj4mNgITCxqM5E4JFsejEwToX/HeOBlyPiJYCIaI6Iv3SqxWZWNg798ivF7yBP8B8LbG4z35iVtVsnIlqA7UAl8GUgJD0p6Q+SbmhvB5KmSaqTVNfU1LS/x2BmZvshTx9/e28vxV/Uu6c6vYBzgFHAB8CzklZHxLOfqRgxF5gLUFtb6y8BNusG5jz9x5Ju77qvfbmk2ytWX1/Pli1b+MY3vrHXeocffjg7d+7s8H52P4R6zDHHdHgbXS1P8DcCx7WZHwhs2UOdxqxfvz+wNSv/j4h4B0DSMuA04FmsJEr94tsfXf1CNSul+vp66urq9hn8KcjT1bMKGCKpSlIfYAqwtKjOUmBqNj0JWB4RATwJVEs6LHtDOBd4rTRNN7PUbNq0iZNPPpmrrrqKU045hSuuuIJnnnmGs88+myFDhrBy5UpWrlzJWWedxciRIznrrLNYv349H3/8MbfeeiuLFi2ipqaGRYsWsXPnTr73ve8xYsQIqqurefzxx1v3c9NNN3HqqacyevRo3nrrLQCampr41re+xahRoxg1ahS/+93vAGhubmb8+PGMHDmSq6++mkL0Hdz2GfxZn/01FEJ8HfBYRKyVNFvSRVm1h4BKSQ3A3wMzs3W3AfdSePOoB/4QEf9e+sMws1Q0NDRw7bXX8vLLL/P666/zi1/8gueff54f/ehH3HXXXZx88smsWLGCNWvWMHv2bG688Ub69OnD7NmzmTx5MvX19UyePJkf/OAH9O/fn1deeYWXX36Z888/H4D333+f0aNH89JLLzFmzBh++tOfAnDttddy3XXXsWrVKh5//HGuuuoqAO644w7OOecc1qxZw0UXXcQbb7xRtnOTV677+CNiGbCsqOzWNtO7gMv2sO6jFG7pNDPrtKqqKkaMGAHA8OHDGTduHJIYMWIEmzZtYvv27UydOpUNGzYgiU8+af8O8meeeYaFCxe2zh911FEA9OnThwsvvBCA008/naeffrq1/muv/bXD4r333mPHjh2sWLGCJ554AoBvfvObrds5mPnJ3RIpZ1+7WUr69u3bOn3IIYe0zh9yyCG0tLRwyy23cN5557FkyRI2bdrE2LFj291ORLR7a2Tv3r1byysqKmhpaQHg008/5YUXXuDQQw/93Drd7TZXj9VjZj3K9u3bOfbYwh3nDz/8cGv5EUccwY4dO1rnx48fz/333986v23btr1ut7h+fX09AGPGjGHBggUA/PrXv97ndg4GvuI3sw45WO/quuGGG5g6dSr33ntva789wHnnncfdd99NTU0Ns2bN4uabb2bGjBmccsopVFRUcNttt3HppZfucbv33XcfM2bMoLq6mpaWFsaMGcODDz7IbbfdxuWXX85pp53Gueeey/HHH38gDrNTdLB9Al1bWxvd8YtYUuzqOVhf+NY11q1bx9ChQ8vdDKP930X2jFRtnvXd1WNmlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYnwfv5l1zHP/WNrtnTertNuj8ADX+PHj+dKXvlTybd91113ceOONe63z3e9+lwsvvJBJkyZ1aB+33347hx9+ONdff32H1t8TX/GbWY/18MMPs2VL8SjypXHXXXd1yXYPBAe/mXULmzZtYujQoXz/+99n+PDhjB8/ng8//BAoDJ8wevRoqqurueSSS9i2bRuLFy+mrq6OK664gpqamta6u40dO5brrruOMWPGMHToUFatWsWll17KkCFDuPnmm1vrXXzxxZx++ukMHz6cuXPnAjBz5kw+/PBDampquOKKKwD4+c9/TnV1Naeeeirf/va3W9dfsWIFZ511FoMHD2bx4sWt5T/84Q8ZNWoU1dXV3Hbbba3ld955JyeddBJf/epXWb9+felPJA5+M+tGNmzYwIwZM1i7di1HHnlk6xj63/nOd7jnnnt4+eWXGTFiBHfccQeTJk2itraWBQsWUF9f3+7gan369GHFihVMnz6diRMn8sADD/Dqq6/y8MMP09zcDMC8efNYvXo1dXV13HfffTQ3N3P33Xdz6KGHUl9fz4IFC1i7di133nkny5cv56WXXuInP/lJ6z7efPNNnn/+eX71q18xc+ZMAJ566ik2bNjAypUrqa+vZ/Xq1axYsYLVq1ezcOFC1qxZwxNPPMGqVau65Dy6j9/Muo2qqipqamqAwpDJu4dhfvfddzn33HMBmDp1Kpdd1u4o8Z9z0UWFrxQZMWIEw4cP54tf/CIAgwcPZvPmzVRWVnLfffexZMkSADZv3syGDRuorKz8zHaWL1/OpEmTWr9u8eijj25ddvHFF3PIIYcwbNiw1i91eeqpp3jqqacYOXIkADt37mTDhg3s2LGDSy65hMMOO+wz7Ss1B7+ZdRtth2SuqKj4XPdNR7fXdnjn3fMtLS385je/4ZlnnuGFF17gsMMOY+zYsezatetz29nTEM/Fbd49NlpEMGvWLK6++urP1P3xj398QIZ4dlePmXVr/fv356ijjuK3v/0tAPPnz2+9+i8einl/bd++naOOOorDDjuM119/nd///vety3r37t36JS/jxo3jsccea+0e2rp16163+/Wvf5158+a1fqn7n//8Z95++23GjBnDkiVL+PDDD9mxYwe//OUvO9z2vfEVv5l1TBfcftlRjzzyCNOnT+eDDz5g8ODB/OxnPwMKt1NOnz6dQw89dI9forI3EyZM4MEHH6S6upqTTjqJ0aNHty6bNm0a1dXVnHbaaSxYsICbbrqJc889l4qKCkaOHPmZ7wIoNn78eNatW8eZZ54JwOGHH86jjz7KaaedxuTJk6mpqeGEE07gK1/5yv6fjBw8LHOJeFhm6+k8LPPBw8Mym5nZfnHwm5klxsFvZrkdbF3DKSrF78DBb2a59OvXj+bmZod/GUUEzc3N9OvXr1Pb8V09ZpbLwIEDaWxspKmpqdxNSVq/fv0YOHBgp7bh4DezXHr37k1VVVW5m2ElkKurR9IESeslNUia2c7yvpIWZctflDQoKx8k6UNJ9dnPg6VtvpmZ7a99XvFLqgAeAL4GNAKrJC2NiNfaVLsS2BYRJ0qaAtwDTM6W/SkiakrcbjMz66A8V/xnAA0RsTEiPgYWAhOL6kwEHsmmFwPjdCAGnDAzs/2WJ/iPBTa3mW/MytqtExEtwHZg9/B1VZLWSPoPSV3z/LGZmeWW58Pd9q7ci+/n2lOdN4HjI6JZ0unAv0oaHhHvfWZlaRowDeD444/P0SQzM+uoPFf8jcBxbeYHAsXfZdZaR1IvoD+wNSI+iohmgIhYDfwJ+NwALxExNyJqI6J2wIAB+38UZmaWW57gXwUMkVQlqQ8wBVhaVGcpMDWbngQsj4iQNCD7cBhJg4EhwMbSNN3MzDpin109EdEi6RrgSaACmBcRayXNBuoiYinwEDBfUgOwlcKbA8AYYLakFuAvwPSI2PtA1WZm1qVyPcAVEcuAZUVlt7aZ3gV87rvOIuJx4PFOttHMzErIY/WYmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlphcwS9pgqT1khokzWxneV9Ji7LlL0oaVLT8eEk7JV1fmmabmVlH7TP4JVUADwAXAMOAyyUNK6p2JbAtIk4E5gD3FC2fA/y68801M7POynPFfwbQEBEbI+JjYCEwsajOROCRbHoxME6SACRdDGwE1pamyWZm1hl5gv9YYHOb+casrN06EdECbAcqJf0N8D+BOzrfVDMzK4U8wa92yiJnnTuAORGxc687kKZJqpNU19TUlKNJZmbWUb1y1GkEjmszPxDYsoc6jZJ6Af2BrcDfAZMk/S/gSOBTSbsi4v62K0fEXGAuQG1tbfGbipmZlVCe4F8FDJFUBfwZmAL8l6I6S4GpwAvAJGB5RATwld0VJN0O7CwOfTMzO7D2GfwR0SLpGuBJoAKYFxFrJc0G6iJiKfAQMF9SA4Ur/Sld2WgzM+u4PFf8RMQyYFlR2a1tpncBl+1jG7d3oH1mZlZifnLXzCwxDn4zs8Q4+M3MEuPgNzNLjIPfzCwxDn4zs8Q4+M3MEuPgNzNLjIPfzCwxuZ7cNWvPnKf/WJb9Xve1L5dlv2Y9ha/4zcwS4+A3M0uMg9/MLDEOfjOzxDj4zcwS4+A3M0uMg9/MLDEOfjOzxDj4zcwS4+A3M0uMg9/MLDEOfjOzxDj4zcwS4+A3M0uMg9/MLDEOfjOzxOQKfkkTJK2X1CBpZjvL+0palC1/UdKgrPwMSfXZz0uSLilt883MbH/tM/glVQAPABcAw4DLJQ0rqnYlsC0iTgTmAPdk5a8CtRFRA0wA/kmSv/XLzKyM8lzxnwE0RMTGiPgYWAhMLKozEXgkm14MjJOkiPggIlqy8n5AlKLRZmbWcXmC/1hgc5v5xqys3TpZ0G8HKgEk/Z2ktcArwPQ2bwRmZlYGeYJf7ZQVX7nvsU5EvBgRw4FRwCxJ/T63A2mapDpJdU1NTTmaZGZmHZUn+BuB49rMDwS27KlO1offH9jatkJErAPeB04p3kFEzI2I2oioHTBgQP7Wm5nZfssT/KuAIZKqJPUBpgBLi+osBaZm05OA5RER2Tq9ACSdAJwEbCpJy83MrEP2eYdNRLRIugZ4EqgA5kXEWkmzgbqIWAo8BMyX1EDhSn9Ktvo5wExJnwCfAv8tIt7pigMxM7N8ct1aGRHLgGVFZbe2md4FXNbOevOB+Z1so9nB5bl/LM9+z5tVnv1aj+Mnd83MEuOHqcy6C/+lYSXiK34zs8T4it/M9q5cf2mA/9roIg5+Mzt4uXurS7irx8wsMQ5+M7PEOPjNzBLj4DczS4yD38wsMb6rx7qvct5maD1bD7+byFf8ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlhgHv5lZYvwAl3Xa6DfmHtgdPld5YPdn1sP4it/MLDEOfjOzxDj4zcwS4+A3M0uMg9/MLDEOfjOzxOQKfkkTJK2X1CBpZjvL+0palC1/UdKgrPxrklZLeiX79/zSNt/MzPbXPoNfUgXwAHABMAy4XNKwompXAtsi4kRgDnBPVv4O8J8jYgQwFZhfqoabmVnH5HmA6wygISI2AkhaCEwEXmtTZyJweza9GLhfkiJiTZs6a4F+kvpGxEedbrkl64WNzWXb95mD/fCYdX95unqOBTa3mW/MytqtExEtwHag+BXyLWBNe6EvaZqkOkl1TU1NedtuZmYdkCf41U5Z7E8dScMpdP9c3d4OImJuRNRGRO2AAQNyNMnMzDoqT/A3Ase1mR8IbNlTHUm9gP7A1mx+ILAE+E5E/KmzDTYzs87JE/yrgCGSqiT1AaYAS4vqLKXw4S3AJGB5RISkI4F/B2ZFxO9K1WgzM+u4fQZ/1md/DfAksA54LCLWSpot6aKs2kNApaQG4O+B3bd8XgOcCNwiqT77+ULJj8LMzHLLNSxzRCwDlhWV3dpmehdwWTvr/QPwD51so5mZlZCf3DUzS4yD38wsMQ5+M7PEOPjNzBLj4DczS4y/bL0HOeBfem5m3ZKv+M3MEuPgNzNLjIPfzCwxDn4zs8Q4+M3MEuPgNzNLjIPfzCwxDn4zs8Q4+M3MEtPjntyd8/Qfy90EM7ODmq/4zcwS4+A3M0uMg9/MLDEOfjOzxDj4zcwS4+A3M0uMg9/MLDEOfjOzxDj4zcwSkyv4JU2QtF5Sg6SZ7SzvK2lRtvxFSYOy8kpJz0naKen+0jbdzMw6Yp/BL6kCeAC4ABgGXC5pWFG1K4FtEXEiMAe4JyvfBdwCXF+yFpuZWafkGavnDKAhIjYCSFoITARea1NnInB7Nr0YuF+SIuJ94HlJJ5auyWbl88LG5rLs98zBlWXZr/VMebp6jgU2t5lvzMrarRMRLcB2wP9TzcwOQnmCX+2URQfq7HkH0jRJdZLqmpqa8q5mZmYdkKerpxE4rs38QGDLHuo0SuoF9Ae25m1ERMwF5gLU1tbmfsM4WI1+Y265m2Bmtkd5rvhXAUMkVUnqA0wBlhbVWQpMzaYnAcsjotsHuJlZT7TPK/6IaJF0DfAkUAHMi4i1kmYDdRGxFHgImC+pgcKV/pTd60vaBPwt0EfSxcD4iHiteD9mZnZg5PoGrohYBiwrKru1zfQu4LI9rDuoE+0zM7MS85O7ZmaJcfCbmSXGwW9mlhgHv5lZYhz8ZmaJcfCbmSXGwW9mlphc9/GbWXmVa1RQ8MigPZGv+M3MEuPgNzNLjIPfzCwxDn4zs8Q4+M3MEuPgNzNLjIPfzCwxDn4zs8Q4+M3MEuMnd81sr8r11LCfGO46vuI3M0uMg9/MLDEOfjOzxDj4zcwS4+A3M0uM7+oxs4OS7ybqOj02+Ee/MbfcTTAzOyj12OA3M+uIsn7b2XkHZj+5+vglTZC0XlKDpJntLO8raVG2/EVJg9osm5WVr5f09dI13czMOmKfwS+pAngAuAAYBlwuaVhRtSuBbRFxIjAHuCdbdxgwBRgOTAD+T7Y9MzMrkzxX/GcADRGxMSI+BhYCE4vqTAQeyaYXA+MkKStfGBEfRcT/BRqy7ZmZWZnkCf5jgc1t5huzsnbrREQLsB2ozLmumZkdQHk+3FU7ZZGzTp51kTQNmJbN7pS0Pke7jgHeyVGvJ0v9HKR+/OBz0LOO/6r/3ZG1dp+DE/KukCf4G4Hj2swPBLbsoU6jpF5Af2BrznWJiLnAft1/KakuImr3Z52eJvVzkPrxg89B6scPHTsHebp6VgFDJFVJ6kPhw9qlRXWWAlOz6UnA8oiIrHxKdtdPFTAEWLk/DTQzs9La5xV/RLRIugZ4EqgA5kXEWkmzgbqIWAo8BMyX1EDhSn9Ktu5aSY8BrwEtwIyI+EsXHYuZmeWQ6wGuiFgGLCsqu7XN9C7gsj2seydwZyfauCd+NNfnIPXjB5+D1I8fOnAOVOiRMTOzVHh0TjOzxHTL4N/XEBI9kaR5kt6W9GqbsqMlPS1pQ/bvUeVsY1eSdJyk5yStk7RW0rVZeRLnQFI/SSslvZQd/x1ZeVU2TMqGbNiUPuVua1eSVCFpjaRfZfOpHf8mSa9IqpdUl5Xt92ug2wV/ziEkeqKHKQx70dZM4NmIGAI8m833VC3A/4iIocBoYEb2e0/lHHwEnB8RpwI1wARJoykMjzInO/5tFIZP6cmuBda1mU/t+AHOi4iaNrdw7vdroNsFP/mGkOhxImIFhTum2mo7VMYjwMUHtFEHUES8GRF/yKZ3UHjxH0si5yAKdmazvbOfAM6nMEwK9ODjB5A0EPgm8M/ZvEjo+Pdiv18D3TH4PQzEX/2niHgTCsEIfKHM7TkgstFfRwIvktA5yLo56oG3gaeBPwHvZsOkQM9/LfwYuAH4NJuvJK3jh8Kb/VOSVmcjHkAHXgPdcTz+XMNAWM8k6XDgceC/R8R7hYu+NGTPwNRIOhJYAgxtr9qBbdWBIelC4O2IWC1p7O7idqr2yONv4+yI2CLpC8DTkl7vyEa64xV/rmEgEvGWpC8CZP++Xeb2dClJvSmE/oKIeCIrTuocAETEu8BvKHzWcWQ2TAr07NfC2cBFkjZR6N49n8JfAKkcPwARsSX7920Kb/5n0IHXQHcM/jxDSKSi7VAZU4F/K2NbulTWn/sQsC4i7m2zKIlzIGlAdqWPpEOBr1L4nOM5CsOkQA8+/oiYFREDI2IQhdf88oi4gkSOH0DS30g6Yvc0MB54lQ68BrrlA1ySvkHh3X73EBJd8WTwQUXSvwBjKYzE9xZwG/CvwGPA8cAbwGURUfwBcI8g6Rzgt8Ar/LWP90YK/fw9/hxIqqbwwV0FhQu2xyJitqTBFK6AjwbWAP81Ij4qX0u7XtbVc31EXJjS8WfHuiSb7QX8IiLulFTJfr4GumXwm5lZx3XHrh4zM+sEB7+ZWWIc/GZmiXHwm5klxsFvZpYYB7+ZWWIc/GZmiXHwm5kl5v8DG3PVJ1FAsxMAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "