{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Importing the basic libraries","metadata":{"id":"flqNztvHbcLm"}},{"cell_type":"code","source":"import datetime\nimport os\nimport sys\nfrom tqdm import tqdm\n\nimport numpy as np\nimport matplotlib\nimport matplotlib.pyplot as plt\nimport cv2\n\nfrom scipy import stats\nimport scipy.io\nfrom scipy.optimize import brentq\nfrom scipy.interpolate import interp1d\n\nimport random\nimport pathlib\n\nfrom sklearn import metrics as sklearn_metrics\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import LabelEncoder\n\nimport pandas as pd\nfrom tabulate import tabulate","metadata":{"id":"zLJb2GMDeMBa","execution":{"iopub.status.busy":"2023-03-25T18:58:34.849555Z","iopub.execute_input":"2023-03-25T18:58:34.850048Z","iopub.status.idle":"2023-03-25T18:58:34.858134Z","shell.execute_reply.started":"2023-03-25T18:58:34.850008Z","shell.execute_reply":"2023-03-25T18:58:34.856824Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Basic Codes for Plotting","metadata":{"id":"-z4qggyupXEv"}},{"cell_type":"code","source":"def plotting(x,y,line_type,col,line_width,x_label,x_label_size,y_label,y_label_size,plot_title,title_size):\n  \"\"\"Wrapper function used for plotting\"\"\"\n  plt.plot(x,y,line_type,c=col,linewidth=line_width)\n  plt.grid(color = 'aqua', linestyle = 'dashdot', linewidth = 0.5)\n  plt.title(plot_title, fontsize = title_size)\n  plt.xlabel(x_label,fontsize = x_label_size)\n  plt.ylabel(y_label,fontsize = y_label_size)\n    \ndef spectrum_plotting(x,y,line_type,col,line_width,x_label,x_label_size,y_label,y_label_size,plot_title,title_size):\n  \"\"\"Wrapper function used for plotting spectrums\"\"\"\n  plt.semilogy(x,np.sqrt(y),line_type,c=col,linewidth=line_width);  \n  plt.grid(color = 'aqua', linestyle = 'dashdot', linewidth = 0.5)\n  plt.title(plot_title, fontsize = title_size)\n  plt.xlabel(x_label,fontsize = x_label_size)\n  plt.ylabel(y_label,fontsize = y_label_size)    \n    \ndef get_cmap(n, name='hsv'):\n    '''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct \n    RGB color; the keyword argument name must be a standard mpl colormap name.'''\n    return matplotlib.colormaps[name]  ","metadata":{"id":"V969_vfgpXKP","execution":{"iopub.status.busy":"2023-03-25T18:58:34.861022Z","iopub.execute_input":"2023-03-25T18:58:34.861419Z","iopub.status.idle":"2023-03-25T18:58:34.877969Z","shell.execute_reply.started":"2023-03-25T18:58:34.861380Z","shell.execute_reply":"2023-03-25T18:58:34.877012Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Reading and Plotting the Training Datasets","metadata":{"id":"25LDyCxDi0yV"}},{"cell_type":"code","source":"my_data = pd.read_csv(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/tdcsfog/003f117e14.csv\")\n# my_data","metadata":{"id":"NZO4w-BVB9G3","execution":{"iopub.status.busy":"2023-03-25T18:58:34.879553Z","iopub.execute_input":"2023-03-25T18:58:34.880817Z","iopub.status.idle":"2023-03-25T18:58:34.907491Z","shell.execute_reply.started":"2023-03-25T18:58:34.880736Z","shell.execute_reply":"2023-03-25T18:58:34.906212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"F_s = 128\nnum_samples = len(my_data.index) \nt = np.array(my_data[\"Time\"])/F_s\n\ninputs_names = np.array([\"AccV\",\"AccML\",\"AccAP\"])\noutputs_names = np.array([\"StartHesitation\",\"Turn\",\"Walking\"])\n\nx = np.zeros((inputs_names.shape[0],num_samples)); \ny = np.zeros((outputs_names.shape[0],num_samples))\n\n\nfor i in range(inputs_names.shape[0]):\n    x[i,:] = np.array(my_data[inputs_names[i]])\nfor i in range(outputs_names.shape[0]):\n    y[i,:] = np.array(my_data[outputs_names[i]])   \n\nx = (x-np.expand_dims(np.mean(x,1),1))/np.expand_dims(np.std(x,1),1); #z-scoring the data           \n\nmy_cmap1 = get_cmap(inputs_names.shape[0], name='Set1')\nmy_cmap2 = get_cmap(outputs_names.shape[0], name='Set2')","metadata":{"id":"hIICEqHAi0Mt","execution":{"iopub.status.busy":"2023-03-25T18:58:34.909920Z","iopub.execute_input":"2023-03-25T18:58:34.910302Z","iopub.status.idle":"2023-03-25T18:58:34.925728Z","shell.execute_reply.started":"2023-03-25T18:58:34.910267Z","shell.execute_reply":"2023-03-25T18:58:34.924266Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#plotting the data\n\nmin_val = np.min(x); max_val = np.max(x);\nmy_alpha = 0.5;\n\nplt.figure(figsize = (20,5))\nfor i in range(x.shape[0]):\n    plotting(t,x[i,:],\"-\",my_cmap1(i),1,\"Time in seconds\",15,\"Signal Amplitude\",15,\"Accelerometer Data and Annotations\",20)\nplt.legend(inputs_names,loc=\"upper right\")\nfor i in range(y.shape[0]):\n    plt.fill_between(t,min_val*y[i,:],max_val*y[i,:],facecolor=my_cmap2(i),alpha=my_alpha)\n\nplt.legend(np.concatenate((inputs_names,outputs_names)),loc=\"lower right\")\nplt.show()","metadata":{"id":"l0UxwKtai0PM","outputId":"180eafba-0c90-4167-da87-b885205e39c5","execution":{"iopub.status.busy":"2023-03-25T18:58:34.929778Z","iopub.execute_input":"2023-03-25T18:58:34.930608Z","iopub.status.idle":"2023-03-25T18:58:35.330603Z","shell.execute_reply.started":"2023-03-25T18:58:34.930544Z","shell.execute_reply":"2023-03-25T18:58:35.329162Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Creating a Function For the Above Read and Display Codes","metadata":{"id":"ui_3ET2Hzqbk"}},{"cell_type":"code","source":"def read_and_plot_data(dir_name,F_s,inputs_names,outputs_names,do_zscore=True,plot_data=True):\n    my_data = pd.read_csv(dir_name)    \n    num_samples = len(my_data.index) \n    t = np.array(my_data[\"Time\"])/F_s\n\n\n    x = np.zeros((inputs_names.shape[0],num_samples)); \n    y = np.zeros((outputs_names.shape[0],num_samples))\n\n\n    for i in range(inputs_names.shape[0]):\n        x[i,:] = np.array(my_data[inputs_names[i]])\n    for i in range(outputs_names.shape[0]):\n        y[i,:] = np.array(my_data[outputs_names[i]])   \n\n    if do_zscore:\n        x = (x-np.expand_dims(np.mean(x,1),1))/np.expand_dims(np.std(x,1),1); #z-scoring the data           \n\n    my_cmap1 = get_cmap(inputs_names.shape[0], name='Set1')\n    my_cmap2 = get_cmap(outputs_names.shape[0], name='Set2')\n\n    if plot_data:\n        min_val = np.min(x); max_val = np.max(x);\n        my_alpha = 0.5;\n\n        plt.figure(figsize = (20,5))\n        for i in range(x.shape[0]):\n            plotting(t,x[i,:],\"-\",my_cmap1(i),1,\"Time in seconds\",15,\"Signal Amplitude\",15,\"Accelerometer Data and Annotations\",20)\n        plt.legend(inputs_names,loc=\"upper right\")\n        for i in range(y.shape[0]):\n            plt.fill_between(t,min_val*y[i,:],max_val*y[i,:],facecolor=my_cmap2(i),alpha=my_alpha)\n\n        plt.legend(np.concatenate((inputs_names,outputs_names)),loc=\"lower right\")\n        plt.show()        \n\n    return t,x,y    ","metadata":{"id":"GmYL2nIAi0Tt","execution":{"iopub.status.busy":"2023-03-25T18:58:35.332501Z","iopub.execute_input":"2023-03-25T18:58:35.332918Z","iopub.status.idle":"2023-03-25T18:58:35.348008Z","shell.execute_reply.started":"2023-03-25T18:58:35.332880Z","shell.execute_reply":"2023-03-25T18:58:35.346263Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"inputs_names = np.array([\"AccV\",\"AccML\",\"AccAP\"])\noutputs_names = np.array([\"StartHesitation\",\"Turn\",\"Walking\"])\n\nF_s = 100; parent_dir = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/tdcsfog/\"\nfiles_list =  os.listdir(path=parent_dir)\ntot_num_samples = 0 \n\nprint(\"Root folder is: \" + parent_dir)\n#for file_index in range(len(files_list)):\nfor file_index in range(200,250):\n    file_name = files_list[file_index]\n    this_dir_name = parent_dir + file_name\n    print(\"For the file with name: \" + file_name)\n    t,x,y = read_and_plot_data(this_dir_name,F_s,inputs_names,outputs_names,plot_data=True)   \n    \n    #tot_num_samples = tot_num_samples + t.shape[0] #just for counting","metadata":{"id":"wooxvJyBi0WU","outputId":"f9f17c8e-4d84-48bb-a14d-b6e9faa785f9","execution":{"iopub.status.busy":"2023-03-25T18:58:35.349958Z","iopub.execute_input":"2023-03-25T18:58:35.350886Z","iopub.status.idle":"2023-03-25T18:58:55.193133Z","shell.execute_reply.started":"2023-03-25T18:58:35.350827Z","shell.execute_reply":"2023-03-25T18:58:55.191719Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# in case total size of data is required\n# print(\"Total concatenated size should be: \" + str(tot_num_samples))","metadata":{"execution":{"iopub.status.busy":"2023-03-25T18:58:55.194758Z","iopub.execute_input":"2023-03-25T18:58:55.195125Z","iopub.status.idle":"2023-03-25T18:58:55.200338Z","shell.execute_reply.started":"2023-03-25T18:58:55.195090Z","shell.execute_reply":"2023-03-25T18:58:55.198889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Meta Data Printing ","metadata":{}},{"cell_type":"code","source":"meta_data = pd.read_csv(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/tdcsfog_metadata.csv\")\n#meta_data = pd.read_csv(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/tasks.csv\")","metadata":{"id":"f6gBbTivi0a-","execution":{"iopub.status.busy":"2023-03-25T18:58:55.201748Z","iopub.execute_input":"2023-03-25T18:58:55.202158Z","iopub.status.idle":"2023-03-25T18:58:55.226002Z","shell.execute_reply.started":"2023-03-25T18:58:55.202120Z","shell.execute_reply":"2023-03-25T18:58:55.224279Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta_data","metadata":{"id":"MxR-Jyc608LW","execution":{"iopub.status.busy":"2023-03-25T18:58:55.227407Z","iopub.execute_input":"2023-03-25T18:58:55.229005Z","iopub.status.idle":"2023-03-25T18:58:55.262349Z","shell.execute_reply.started":"2023-03-25T18:58:55.228961Z","shell.execute_reply":"2023-03-25T18:58:55.260852Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"unlabeled_parent_dir = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/unlabeled/\"\nunlabeled_files_list =  os.listdir(path=unlabeled_parent_dir)","metadata":{"id":"sNGGtAPb08NV","execution":{"iopub.status.busy":"2023-03-25T18:58:55.266312Z","iopub.execute_input":"2023-03-25T18:58:55.266817Z","iopub.status.idle":"2023-03-25T18:58:55.297435Z","shell.execute_reply.started":"2023-03-25T18:58:55.266775Z","shell.execute_reply":"2023-03-25T18:58:55.296277Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(unlabeled_files_list)","metadata":{"id":"J_XmVWPs08Pd","execution":{"iopub.status.busy":"2023-03-25T18:58:55.299364Z","iopub.execute_input":"2023-03-25T18:58:55.299752Z","iopub.status.idle":"2023-03-25T18:58:55.307103Z","shell.execute_reply.started":"2023-03-25T18:58:55.299716Z","shell.execute_reply":"2023-03-25T18:58:55.305755Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}