├── .gitignore ├── .log ├── DTW └── DTW_Pipeline.py ├── MATLAB Codes ├── Example_Usage.m ├── WPT_Frequency_Domain_Features.m ├── WPT_Informative_Packet_Recon.m └── WP_Energy_Ratio.m ├── Makefile ├── README.md ├── WPT_EEMD_ML ├── EEMD_Classification.py ├── EEMD_Feature_Extraction.py ├── EEMD_Transfer_Learning.py ├── Plot_Results.py ├── WPT_Classification.py ├── WPT_Feature_Extraction.py ├── WPT_Informative_Packet_Recon.py ├── WPT_Transfer_Learning.py ├── WP_Energy_Ratio.py ├── __pycache__ │ ├── EEMD_Feature_Extraction.cpython-37.pyc │ ├── EEMD_Transfer_Learning.cpython-37.pyc │ ├── EEMD_Transfer_Learning_2case.cpython-37.pyc │ ├── WPT_Classification.cpython-37.pyc │ ├── WPT_Feature_Extraction.cpython-37.pyc │ ├── WPT_Feature_Extraction_Transfer_Learning_One_Train_One_Test.cpython-37.pyc │ ├── WPT_Informative_Packet_Recon.cpython-37.pyc │ ├── WPT_Transfer_Learning.cpython-37.pyc │ ├── WPT_Transfer_Learning_2case.cpython-37.pyc │ └── WP_Energy_Ratio.cpython-37.pyc └── file_paths.txt ├── build ├── doctrees │ ├── ACF.doctree │ ├── DTW.doctree │ ├── EEMD.doctree │ ├── FFT.doctree │ ├── MATLAB.doctree │ ├── PSD.doctree │ ├── TDA.doctree │ ├── WPT.doctree │ ├── chatter_detection.doctree │ ├── citing.doctree │ ├── contributing.doctree │ ├── environment.pickle │ ├── index.doctree │ ├── installation.doctree │ ├── license.doctree │ ├── modules.doctree │ └── surface_texture.doctree ├── html │ ├── .buildinfo │ ├── .nojekyll │ ├── ACF.html │ ├── DTW.html │ ├── EEMD.html │ ├── FFT.html │ ├── MATLAB.html │ ├── PSD.html │ ├── TDA.html │ ├── WPT.html │ ├── _images │ │ ├── DTW_Animation.gif │ │ ├── Results.png │ │ ├── Violation_Check.png │ │ ├── WPT-1.png │ │ ├── WPT_Tree_with_MATLAB_Numbering.png │ │ ├── WPT_Tree_with_Ordering.png │ │ └── example.jpg │ ├── _modules │ │ ├── DTW │ │ │ └── DTW_Pipeline.html │ │ ├── EEMD_Feature_Extraction.html │ │ ├── EEMD_Transfer_Learning.html │ │ ├── EEMD_Transfer_Learning_2case.html │ │ ├── WPT_EEMD_ML │ │ │ ├── EEMD_Feature_Extraction.html │ │ │ ├── EEMD_Transfer_Learning.html │ │ │ ├── EEMD_Transfer_Learning_2case.html │ │ │ ├── WPT_Feature_Extraction.html │ │ │ ├── WPT_Transfer_Learning.html │ │ │ ├── WPT_Transfer_Learning_2case.html │ │ │ └── WP_Energy_Ratio.html │ │ ├── WPT_Feature_Extraction.html │ │ ├── WPT_Feature_Extraction_Transfer_Learning_One_Train_One_Test.html │ │ ├── WPT_Transfer_Learning.html │ │ ├── WPT_Transfer_Learning_2case.html │ │ └── index.html │ ├── _sources │ │ ├── ACF.rst.txt │ │ ├── DTW.rst.txt │ │ ├── EEMD.rst.txt │ │ ├── FFT.rst.txt │ │ ├── MATLAB.rst.txt │ │ ├── PSD.rst.txt │ │ ├── TDA.rst.txt │ │ ├── WPT.rst.txt │ │ ├── chatter_detection.rst.txt │ │ ├── citing.rst.txt │ │ ├── contributing.rst.txt │ │ ├── index.rst.txt │ │ ├── installation.rst.txt │ │ ├── license.rst.txt │ │ ├── modules.rst.txt │ │ └── surface_texture.rst.txt │ ├── _static │ │ ├── ajax-loader.gif │ │ ├── basic.css │ │ ├── classic.css │ │ ├── comment-bright.png │ │ ├── comment-close.png │ │ ├── comment.png │ │ ├── css │ │ │ ├── badge_only.css │ │ │ ├── fonts │ │ │ │ ├── Roboto-Slab-Bold.woff │ │ │ │ ├── Roboto-Slab-Bold.woff2 │ │ │ │ ├── Roboto-Slab-Regular.woff │ │ │ │ ├── Roboto-Slab-Regular.woff2 │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ ├── fontawesome-webfont.woff2 │ │ │ │ ├── lato-bold-italic.woff │ │ │ │ ├── lato-bold-italic.woff2 │ │ │ │ ├── lato-bold.woff │ │ │ │ ├── lato-bold.woff2 │ │ │ │ ├── lato-normal-italic.woff │ │ │ │ ├── lato-normal-italic.woff2 │ │ │ │ ├── lato-normal.woff │ │ │ │ └── lato-normal.woff2 │ │ │ └── theme.css │ │ ├── doctools.js │ │ ├── documentation_options.js │ │ ├── down-pressed.png │ │ ├── down.png │ │ ├── file.png │ │ ├── fonts │ │ │ ├── Inconsolata-Bold.ttf │ │ │ ├── Inconsolata-Regular.ttf │ │ │ ├── Inconsolata.ttf │ │ │ ├── Lato-Bold.ttf │ │ │ ├── Lato-Regular.ttf │ │ │ ├── Lato │ │ │ │ ├── lato-bold.eot │ │ │ │ ├── lato-bold.ttf │ │ │ │ ├── lato-bold.woff │ │ │ │ ├── lato-bold.woff2 │ │ │ │ ├── lato-bolditalic.eot │ │ │ │ ├── lato-bolditalic.ttf │ │ │ │ ├── lato-bolditalic.woff │ │ │ │ ├── lato-bolditalic.woff2 │ │ │ │ ├── lato-italic.eot │ │ │ │ ├── lato-italic.ttf │ │ │ │ ├── lato-italic.woff │ │ │ │ ├── lato-italic.woff2 │ │ │ │ ├── lato-regular.eot │ │ │ │ ├── lato-regular.ttf │ │ │ │ ├── lato-regular.woff │ │ │ │ └── lato-regular.woff2 │ │ │ ├── RobotoSlab-Bold.ttf │ │ │ ├── RobotoSlab-Regular.ttf │ │ │ ├── RobotoSlab │ │ │ │ ├── roboto-slab-v7-bold.eot │ │ │ │ ├── roboto-slab-v7-bold.ttf │ │ │ │ ├── roboto-slab-v7-bold.woff │ │ │ │ ├── roboto-slab-v7-bold.woff2 │ │ │ │ ├── roboto-slab-v7-regular.eot │ │ │ │ ├── roboto-slab-v7-regular.ttf │ │ │ │ ├── roboto-slab-v7-regular.woff │ │ │ │ └── roboto-slab-v7-regular.woff2 │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── jquery-3.2.1.js │ │ ├── jquery-3.4.1.js │ │ ├── jquery-3.5.1.js │ │ ├── jquery.js │ │ ├── js │ │ │ ├── badge_only.js │ │ │ ├── html5shiv-printshiv.min.js │ │ │ ├── html5shiv.min.js │ │ │ ├── modernizr.min.js │ │ │ └── theme.js │ │ ├── language_data.js │ │ ├── logo.png │ │ ├── minus.png │ │ ├── plot_directive.css │ │ ├── plus.png │ │ ├── pygments.css │ │ ├── searchtools.js │ │ ├── sidebar.js │ │ ├── underscore-1.12.0.js │ │ ├── underscore-1.13.1.js │ │ ├── underscore-1.3.1.js │ │ ├── underscore.js │ │ ├── up-pressed.png │ │ ├── up.png │ │ └── websupport.js │ ├── chatter_detection.html │ ├── citing.html │ ├── contributing.html │ ├── genindex.html │ ├── index.html │ ├── installation.html │ ├── license.html │ ├── modules.html │ ├── objects.inv │ ├── py-modindex.html │ ├── search.html │ ├── searchindex.js │ └── surface_texture.html ├── latex │ ├── FeatureExtractionUsingWPTEEMD.aux │ ├── FeatureExtractionUsingWPTEEMD.fdb_latexmk │ ├── FeatureExtractionUsingWPTEEMD.fls │ ├── FeatureExtractionUsingWPTEEMD.idx │ ├── FeatureExtractionUsingWPTEEMD.ilg │ ├── FeatureExtractionUsingWPTEEMD.ind │ ├── FeatureExtractionUsingWPTEEMD.log │ ├── FeatureExtractionUsingWPTEEMD.out │ ├── FeatureExtractionUsingWPTEEMD.pdf │ ├── FeatureExtractionUsingWPTEEMD.tex │ ├── FeatureExtractionUsingWPTEEMD.toc │ ├── LICRcyr2utf8.xdy │ ├── LICRlatin2utf8.xdy │ ├── LatinRules.xdy │ ├── Makefile │ ├── example.jpg │ ├── footnotehyper-sphinx.sty │ ├── latexmkjarc │ ├── latexmkrc │ ├── make.bat │ ├── python.ist │ ├── sphinx.sty │ ├── sphinx.xdy │ ├── sphinxhighlight.sty │ ├── sphinxhowto.cls │ ├── sphinxmanual.cls │ └── sphinxmulticell.sty └── plot_directive │ ├── WPT-1.hires.png │ ├── WPT-1.pdf │ └── WPT-1.png ├── make.bat ├── source ├── ACF.rst ├── DTW.rst ├── EEMD.rst ├── FFT.rst ├── MATLAB.rst ├── New Text Document.txt ├── PSD.rst ├── TDA.rst ├── WPT.rst ├── WPT_Tree_with_MATLAB_Numbering.png ├── WPT_Tree_with_Ordering.png ├── chatter_detection.rst ├── citing.rst ├── conf.py ├── contributing.rst ├── example.jpg ├── figures │ ├── DTW_Animation.gif │ ├── Results.png │ └── Violation_Check.png ├── index.rst ├── installation.rst ├── license.rst ├── logo.png ├── logo.svg ├── modules.rst ├── references.bib └── surface_texture.rst └── test └── Example_Usage.py /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | build/html/WPT-1.hires.png 3 | build/html/WPT-1.pdf 4 | build/html/WPT-1.png 5 | build/html/WPT-1.py 6 | desktop.ini 7 | *.pyc 8 | -------------------------------------------------------------------------------- /.log: -------------------------------------------------------------------------------- 1 | This is pdfTeX, Version 3.14159265-2.6-1.40.20 (MiKTeX 2.9.7250 64-bit) (preloaded format=pdflatex 2020.2.7) 14 FEB 2020 09:50 2 | entering extended mode 3 | **.. 4 | ("C:\Program Files\MiKTeX 2.9\tex/latex/tools\.tex" 5 | LaTeX2e <2020-02-02> 6 | L3 programming layer <2020-01-31> File ignored) 7 | * 8 | (Please type a command or say `\end') 9 | * 10 | (Please type a command or say `\end') 11 | * 12 | (Please type a command or say `\end') 13 | * 14 | (Please type a command or say `\end') 15 | * 16 | (Please type a command or say `\end') 17 | * 18 | (Please type a command or say `\end') 19 | * 20 | (Please type a command or say `\end') 21 | * -------------------------------------------------------------------------------- /MATLAB Codes/Example_Usage.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/MATLAB Codes/Example_Usage.m -------------------------------------------------------------------------------- /MATLAB Codes/WPT_Frequency_Domain_Features.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/MATLAB Codes/WPT_Frequency_Domain_Features.m -------------------------------------------------------------------------------- /MATLAB Codes/WPT_Informative_Packet_Recon.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/MATLAB Codes/WPT_Informative_Packet_Recon.m -------------------------------------------------------------------------------- /MATLAB Codes/WP_Energy_Ratio.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/MATLAB Codes/WP_Energy_Ratio.m -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SOURCEDIR = source 8 | BUILDDIR = build 9 | 10 | # Put it first so that "make" without argument is like "make help". 11 | help: 12 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 13 | 14 | .PHONY: help Makefile 15 | 16 | # Catch-all target: route all unknown targets to Sphinx using the new 17 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 18 | %: Makefile 19 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Machine Learning Toolbox for Machining 2 | This toolbox includes the documentation for the Python codes used to diagnose chatter in machining applications. 3 | Wavelet Packet Transform (WPT), Ensemble Emprical Mode Decomposition (EEMD) and the Dynamic Time Warping (DTW) are the approaches included in this repository. Please see the references below for more details about the approaches. 4 | 5 | The experimental data in both raw and processed format can be found in [Mendeley repository](https://data.mendeley.com/datasets/hvm4wh3jzx/1). 6 | 7 | Sphinx documentation for this toolbox is available in this [link](http://firaskhasawneh.com/assets/repo_docs/ML_WPT_EEMD_doc/index.html). 8 | 9 | **Note**: If you are using this toolbox, please cite these papers: 10 | 11 | 1. [Yesilli, Khasawneh, Otto, "On transfer learning for chatter detection in turning using wavelet packet transform and ensemble empirical mode decomposition", 2020](https://www.sciencedirect.com/science/article/pii/S1755581719300690) 12 | 2. [Yesilli, Khasawneh, Otto, "Chatter detection in turning using machine learning and similarity measures of time series via dynamic time warping", 2022](https://www.sciencedirect.com/science/article/pii/S1526612522001682) 13 | 14 | **Note**: Check build folder for the most up-to-date documentation. We will include the documentation in a website soon. 15 | 16 | -------------------------------------------------------------------------------- /WPT_EEMD_ML/WPT_Feature_Extraction.py: -------------------------------------------------------------------------------- 1 | import time 2 | import numpy as np 3 | from scipy.stats import skew 4 | from WPT_EEMD_ML.WPT_Informative_Packet_Recon import WPT_Informative_Packet_Recon 5 | from WPT_EEMD_ML.WP_Energy_Ratio import AbsFFT 6 | 7 | 8 | def WPT_Feature_Extraction(data_path, list_name,label_name,WF,L,IWP,fs,saving,*args): 9 | """ 10 | 11 | :param str (data_path): The path where user keeps the data set 12 | 13 | :param str (list_name): Name of the .txt file that includes the names of time series data 14 | 15 | :param str (label_name): Name of the .npy file that includes labels of the time series 16 | 17 | :param str (WF): Wavelet function 18 | 19 | :param int (L): Level of the transform which will be applied to data set 20 | 21 | :param int (IWP): Informative Wavelet Packet number 22 | 23 | :param int (fs): Sampling frequency of the data set 24 | 25 | :param boolean (saving): Set it to true if you want to save reconstructed signals 26 | 27 | :Returns: 28 | 29 | :feature_mat: 30 | (np.array([])) Feature matrix 31 | 32 | :labels: 33 | (np.array([])) Labels 34 | 35 | :time: 36 | (str) Elapsed time during feature matrix generation 37 | 38 | :Example: 39 | 40 | .. doctest:: 41 | 42 | from WPT_EEMD_ML.WPT_Feature_Extraction import WPT_Feature_Extraction 43 | 44 | # parameters 45 | 46 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout' 47 | list_name = 'time_series_name_2inch.txt' 48 | WF = 'db10' 49 | L=4 50 | IWP = 3 51 | label_name = '2_inch_Labels_2Class.npy' 52 | saving = False 53 | fs = 10000 54 | 55 | feature_mat,labels = WPT_Feature_Extraction(data_path, list_name,label_name,WF,L,IWP,fs,saving) 56 | 57 | """ 58 | 59 | #%% Loading time series and labels 60 | start = time.time() 61 | 62 | # file path to folder where the data is kept 63 | file_path = data_path+'\\'+list_name 64 | label_path = data_path+'\\'+label_name 65 | 66 | # read the file that includes the name of datafiles 67 | with open(file_path) as f: 68 | data_names = f.read().splitlines() 69 | 70 | N = len(data_names) 71 | 72 | # import the classification labels 73 | label = np.load(label_path) 74 | 75 | # reconstruct signals from informative wavelet packet 76 | if saving: 77 | recon = WPT_Informative_Packet_Recon(data_path,list_name,WF,L,IWP,saving,args[0]) 78 | else: 79 | recon = WPT_Informative_Packet_Recon(data_path,list_name,WF,L,IWP,saving) 80 | 81 | # compute features 82 | featuremat= np.zeros((N ,14)) 83 | 84 | for i in range(N): 85 | 86 | ts = recon[i] 87 | 88 | # compute time domain features 89 | 90 | featuremat[i,0] = np.average(ts) 91 | featuremat[i,1] = np.std(ts) 92 | featuremat[i,2] = np.sqrt(np.mean(ts**2)) 93 | featuremat[i,3] = max(abs(ts)) 94 | featuremat[i,4] = skew(ts) 95 | L=len(ts) 96 | featuremat[i,5] = sum(np.power(ts-featuremat[i,0],4)) / ((L-1)*np.power(featuremat[i,1],4)) 97 | featuremat[i,6] = featuremat[i,3]/featuremat[i,2] 98 | featuremat[i,7] = featuremat[i,3]/np.power((np.average(np.sqrt(abs(ts)))),2) 99 | featuremat[i,8] = featuremat[i,2]/(np.average((abs(ts)))) 100 | featuremat[i,9] = featuremat[i,3]/(np.average((abs(ts)))) 101 | 102 | # compute FFT of the reconstructed signals 103 | xf,yf = AbsFFT(recon[i],fs) 104 | 105 | # frequency domain features 106 | featuremat[i,10] = sum((xf**2)*yf)/sum(yf) #mean square frequency 107 | featuremat[i,11] = sum(np.cos(2*np.pi*xf*1/fs)*yf)/sum(yf) # one step auto correlation function 108 | featuremat[i,12] = sum(xf*yf)/sum(yf) # frequency center 109 | featuremat[i,13] = sum(((xf-featuremat[i,12])**2)*yf)/sum(yf) # standard frequency 110 | 111 | 112 | 113 | # concatanate feature matrix and the label matrix and then shuffle them 114 | feat_lab = np.concatenate((featuremat,np.reshape(label,(len(label),1))),axis=1) 115 | np.random.shuffle(feat_lab) 116 | 117 | feature_mat = feat_lab[:,0:14] 118 | labels = feat_lab[:,14] 119 | end = time.time() 120 | 121 | if saving: 122 | output={} 123 | output['features'] = feature_mat 124 | output['labels'] = labels 125 | np.save(data_path+'\\'+args[0],output) 126 | 127 | print("Feature computation is completed in {} seconds.".format(end-start)) 128 | 129 | return feature_mat,labels 130 | 131 | -------------------------------------------------------------------------------- /WPT_EEMD_ML/WPT_Informative_Packet_Recon.py: -------------------------------------------------------------------------------- 1 | import time 2 | import numpy as np 3 | import scipy.io as sio 4 | import pywt 5 | 6 | def WPT_Informative_Packet_Recon(data_path,list_name,WF,L,IWP,saving, *args): 7 | 8 | ''' 9 | This function reconstructs signals using the coeffients of informative wavelet packets. 10 | 11 | :param str (data_path): Path to folder where list of time series names and time series data is kept 12 | 13 | :param str (list_name): Name of the .txt file which includes names of time series data 14 | 15 | :param list (label_name): Name of the .npy file which includes labels of time series 16 | 17 | :param str (WF): Wavelet function (see types_ of wavelet functions available in PyWavelet package) 18 | 19 | :param int (IWP): Informative Wavelet Packet Number (IWP) 20 | 21 | :param int (L): Transformation level 22 | 23 | :param bool (saving): It is set to 'True' to save the reconstructed signals 24 | 25 | :param list (*args): Additional parameters such as saving file name for the reconstructed signals if saving is set to true. 26 | 27 | :Returns: 28 | :recon: 29 | Object array that contains the reconstructed signals using informative wavelet packet defined by user. 30 | :time: 31 | Time elapsed during the reconstruction of the signals 32 | :Example: 33 | .. doctest:: 34 | 35 | from WPT_Informative_Packet_Recon import WPT_Informative_Packet_Recon 36 | 37 | # parameters 38 | 39 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout' 40 | list_name = 'time_series_name_2inch.txt' 41 | WF = 'db10' 42 | L=4 43 | IWP = 3 44 | saving = False 45 | 46 | recon = WPT_Informative_Packet_Recon(data_path,list_name,WF,L,IWP,saving) 47 | 48 | ''' 49 | 50 | start=time.time() 51 | # file path to folder where the data is kept 52 | file_path = data_path+'\\'+list_name 53 | 54 | # read the file that includes the name of datafiles 55 | with open(file_path) as f: 56 | data_names = f.read().splitlines() 57 | 58 | N = len(data_names) 59 | 60 | if IWP<1 or IWP>2**L: 61 | raise Exception('Invalid informative wavelet packet number!') 62 | 63 | 64 | ts = np.zeros((N),dtype=object) 65 | recon = np.zeros((N),dtype=object) 66 | 67 | # compute wavelet coefficients and energy ratios 68 | for i in range(N): 69 | # load mat files 70 | name = data_names[i] 71 | 72 | #load the time series 73 | ts[i] = sio.loadmat(data_path+'\\'+name)['tsDS'] 74 | 75 | 76 | # apply wavelet packet decomposition 77 | wp = pywt.WaveletPacket(data=ts[i][:,1], wavelet=WF,maxlevel=L,mode='symmetric') 78 | packet_order = [node.path for node in wp.get_level(L, 'freq')] 79 | 80 | # reconstruct the wavelet packets 81 | # create a empty wavelet packet object 82 | new_wp = pywt.WaveletPacket(data=None, wavelet=WF, mode='symmetric') 83 | new_wp[packet_order[IWP-1]] = wp[packet_order[IWP-1]] 84 | recon[i] = new_wp.reconstruct(update=False) 85 | # find the diff between reconstructed length and time series length 86 | if len(ts[i])>len(recon[i]): 87 | index = len(recon[i]) 88 | else: 89 | index = len(ts[i]) 90 | recon[i] = recon[i][:index] 91 | 92 | if saving: 93 | np.save(data_path+'\\'+args[0],recon) 94 | 95 | end = time.time() 96 | print("Elapsed time for reconstruction: {} seconds".format(end-start)) 97 | 98 | return recon -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/EEMD_Feature_Extraction.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/EEMD_Feature_Extraction.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/EEMD_Transfer_Learning.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/EEMD_Transfer_Learning.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/EEMD_Transfer_Learning_2case.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/EEMD_Transfer_Learning_2case.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WPT_Classification.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WPT_Classification.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WPT_Feature_Extraction.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WPT_Feature_Extraction.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WPT_Feature_Extraction_Transfer_Learning_One_Train_One_Test.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WPT_Feature_Extraction_Transfer_Learning_One_Train_One_Test.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WPT_Informative_Packet_Recon.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WPT_Informative_Packet_Recon.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WPT_Transfer_Learning.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WPT_Transfer_Learning.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WPT_Transfer_Learning_2case.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WPT_Transfer_Learning_2case.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/__pycache__/WP_Energy_Ratio.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/WPT_EEMD_ML/__pycache__/WP_Energy_Ratio.cpython-37.pyc -------------------------------------------------------------------------------- /WPT_EEMD_ML/file_paths.txt: -------------------------------------------------------------------------------- 1 | D:\Data Archive\Cutting_Test_Data_Documented\cutting_tests_processed\2inch_stickout 2 | D:\Data Archive\Cutting_Test_Data_Documented\cutting_tests_processed\2p5inch_stickout 3 | D:\Data Archive\Cutting_Test_Data_Documented\cutting_tests_processed\3p5inch_stickout 4 | D:\Data Archive\Cutting_Test_Data_Documented\cutting_tests_processed\4p5inch_stickout 5 | D:\Data Archive\Cutting Tool Experiment Data\eIMFs\2inch 6 | D:\Data Archive\Cutting Tool Experiment Data\eIMFs\2.5inch 7 | D:\Data Archive\Cutting Tool Experiment Data\eIMFs\3.5inch 8 | D:\Data Archive\Cutting Tool Experiment Data\eIMFs\4.5inch -------------------------------------------------------------------------------- /build/doctrees/ACF.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/ACF.doctree -------------------------------------------------------------------------------- /build/doctrees/DTW.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/DTW.doctree -------------------------------------------------------------------------------- /build/doctrees/EEMD.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/EEMD.doctree -------------------------------------------------------------------------------- /build/doctrees/FFT.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/FFT.doctree -------------------------------------------------------------------------------- /build/doctrees/MATLAB.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/MATLAB.doctree -------------------------------------------------------------------------------- /build/doctrees/PSD.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/PSD.doctree -------------------------------------------------------------------------------- /build/doctrees/TDA.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/TDA.doctree -------------------------------------------------------------------------------- /build/doctrees/WPT.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/WPT.doctree -------------------------------------------------------------------------------- /build/doctrees/chatter_detection.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/chatter_detection.doctree -------------------------------------------------------------------------------- /build/doctrees/citing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/citing.doctree -------------------------------------------------------------------------------- /build/doctrees/contributing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/contributing.doctree -------------------------------------------------------------------------------- /build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/environment.pickle -------------------------------------------------------------------------------- /build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/index.doctree -------------------------------------------------------------------------------- /build/doctrees/installation.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/installation.doctree -------------------------------------------------------------------------------- /build/doctrees/license.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/license.doctree -------------------------------------------------------------------------------- /build/doctrees/modules.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/modules.doctree -------------------------------------------------------------------------------- /build/doctrees/surface_texture.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/doctrees/surface_texture.doctree -------------------------------------------------------------------------------- /build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 56a43fecd69885d1995686ded2cbeddd 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /build/html/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/.nojekyll -------------------------------------------------------------------------------- /build/html/ACF.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Autocorrelation Function (ACF) — Machine learning toolbox for WPT and EEMD 0.1 documentation 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 56 | 57 |
61 | 62 |
63 | 99 |
100 |
101 |
102 | 107 | 108 | 109 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /build/html/FFT.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Fast Fourier Transform (FFT) — Machine learning toolbox for WPT and EEMD 0.1 documentation 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 56 | 57 |
61 | 62 |
63 | 99 |
100 |
101 |
102 | 107 | 108 | 109 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /build/html/PSD.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Power Spectral Density (PSD) — Machine learning toolbox for WPT and EEMD 0.1 documentation 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 56 | 57 |
61 | 62 |
63 | 99 |
100 |
101 |
102 | 107 | 108 | 109 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /build/html/TDA.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Topological Data Analysis — Machine learning toolbox for WPT and EEMD 0.1 documentation 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 56 | 57 |
61 | 62 |
63 | 99 |
100 |
101 |
102 | 107 | 108 | 109 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /build/html/_images/DTW_Animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/DTW_Animation.gif -------------------------------------------------------------------------------- /build/html/_images/Results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/Results.png -------------------------------------------------------------------------------- /build/html/_images/Violation_Check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/Violation_Check.png -------------------------------------------------------------------------------- /build/html/_images/WPT-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/WPT-1.png -------------------------------------------------------------------------------- /build/html/_images/WPT_Tree_with_MATLAB_Numbering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/WPT_Tree_with_MATLAB_Numbering.png -------------------------------------------------------------------------------- /build/html/_images/WPT_Tree_with_Ordering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/WPT_Tree_with_Ordering.png -------------------------------------------------------------------------------- /build/html/_images/example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_images/example.jpg -------------------------------------------------------------------------------- /build/html/_modules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Overview: module code — Machine learning toolbox for WPT and EEMD 0.1 documentation 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 55 | 56 |
60 | 61 |
62 | 101 |
102 |
103 |
104 | 109 | 110 | 111 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /build/html/_sources/ACF.rst.txt: -------------------------------------------------------------------------------- 1 | .. _ACF: 2 | 3 | Autocorrelation Function (ACF) 4 | ====================================== -------------------------------------------------------------------------------- /build/html/_sources/DTW.rst.txt: -------------------------------------------------------------------------------- 1 | .. _DTW: 2 | 3 | Dynamic Time Warping (DTW) 4 | ========================== 5 | 6 | .. image:: figures/DTW_Animation.gif 7 | :class: with-shadow float-center 8 | :scale: 70 9 | 10 | .. automodule:: DTW.DTW_Pipeline 11 | :members: 12 | 13 | :: 14 | 15 | # generate two time series 16 | ts1 = np.linspace(0,6.28,num=100) 17 | ts2 = np.sin(ts1) + np.random.uniform(size=100)/10.0 18 | 19 | # compute the distance between and the plot the warping path 20 | distance = DTW_Distance_Comp(ts1,ts2,5,True,False) 21 | 22 | # generate synthetic data set 23 | 24 | TS1 = [] 25 | for i in range(15): 26 | fs, T = 100, 10 27 | t = np.linspace(-0.2,T,fs*T+1) 28 | A = 20 29 | TS1.append(A*np.sin((i+1)*np.pi*t) + A*np.sin(1*t)) 30 | 31 | # serial distance computation 32 | DM1 = DTW_Dist_Mat(TS1,False,False) 33 | # parallel distance computation 34 | DM2 = DTW_Dist_Mat(TS1,False,True) 35 | 36 | # Generate the second set of time series so that we can apply transfer learning 37 | TS2 = [] 38 | for i in range(20): 39 | fs, T = 100, 10 40 | t = np.linspace(-0.2,T,fs*T+1) 41 | A = 20 42 | TS2.append(A*np.sin((2*i+1)*np.pi*t) + A*np.sin(2*t)) 43 | 44 | # serial distance computation 45 | DM_TF1 = DTW_Dist_Mat(TS1,True,False,TS2) 46 | # parallel distance computation 47 | DM_TF2 = DTW_Dist_Mat(TS1,True,True,TS2) 48 | 49 | # perform classification 50 | labels1 = np.random.choice([0, 1], size=(len(TS1),), p=[1./3, 2./3]) 51 | out = TS_Classification(1,TS1,labels1,DM1,False) 52 | 53 | # perform classification using transfer learning 54 | labels2 = np.random.choice([0, 1], size=(len(TS2),), p=[1./3, 2./3]) 55 | out = TS_Classification(1,TS1,labels1,DM_TF1,True,TS2,labels2,DM_TF2) 56 | 57 | AESA Example 58 | 59 | :: 60 | 61 | # Generate the second set of time series so that we can apply transfer learning 62 | TS3 = [] 63 | for i in range(50): 64 | fs, T = 100, 10 65 | t = np.linspace(-0.2,T,fs*T+1) 66 | A = 20 67 | TS3.append(A*np.sin((2*i+1)*np.pi*t) + A*np.sin(2*t)) 68 | labels3 = np.random.choice([0, 1], size=(len(TS3),), p=[1./3, 2./3]) 69 | # parallel distance computation 70 | DM3 = DTW_Dist_Mat(TS3,False,True) 71 | 72 | # Check if there is any violiation to triangular inequality 73 | H = TriangularInequalityLoosenes(DM3) 74 | 75 | # plot the loosenes constants 76 | plt.figure() 77 | fig = plot_Looseness_Constants(H) 78 | plt.show() 79 | 80 | .. image:: figures/Violation_Check.png 81 | :class: with-shadow float-center 82 | :scale: 40 83 | 84 | :: 85 | 86 | # define a range for the H value 87 | H_range = np.linspace(0,20000,20) 88 | 89 | # run the AESA for each value in H_range 90 | output=[] 91 | for i in H_range: 92 | output.append(AESA_Classification(TS3,labels3,i,DM3,100)) 93 | 94 | #plot the results 95 | plt.figure() 96 | plot_AESA_results(output,H_range) 97 | plt.show() 98 | 99 | .. image:: figures/Results.png 100 | :class: with-shadow float-center 101 | :scale: 40 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /build/html/_sources/EEMD.rst.txt: -------------------------------------------------------------------------------- 1 | .. _EEMD: 2 | 3 | 4 | Ensemble Empirical Mode Decomposition (EEMD) 5 | ============================================ 6 | 7 | .. automodule:: WPT_EEMD_ML.EEMD_Feature_Extraction 8 | :members: 9 | .. automodule:: WPT_EEMD_ML.EEMD_Transfer_Learning 10 | :members: 11 | 12 | :: 13 | 14 | # Compute IMFs 15 | 16 | from EEMD_Feature_Extraction import EEMD_IMF_Compute 17 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout' 18 | list_name = 'time_series_name_2inch.txt' 19 | label_name = '2_inch_Labels_2Class.npy' 20 | EEMDecs = 'A' 21 | saving = True 22 | saving_path = 'D:\\Repositories\\WPT_EEMD_ML_Machining\\test\\EEMD_Output' 23 | 24 | infoEMF,split_labels = EEMD_IMF_Compute(data_path,list_name, EEMDecs, saving, saving_path) 25 | 26 | 27 | # feature extraction 28 | from EEMD_Feature_Extraction import EEMD_Feature_Compute 29 | p=2 30 | feature_mat = EEMD_Feature_Compute(infoEMF,p) 31 | 32 | # classification 33 | from EEMD_Classification import EEEMD_Classification 34 | cv = 5 35 | labels = split_labels[:,2] 36 | saving = True 37 | param_tuning = False 38 | feature_ranking = False 39 | saving_path = 'D:\Repositories\WPT_EEMD_ML_Machining\\test\EEMD_Output' 40 | 41 | clas_rep_test,clas_rep_train = EEEMD_Classification(feature_mat,cv, labels,param_tuning, feature_ranking, saving, saving_path) 42 | 43 | #plot the results 44 | from Plot_Results import plot_results 45 | import numpy as np 46 | 47 | methods = ['EEMD'] 48 | clsf_names = ['SVM','LR','RF','GB'] 49 | cv = 5 50 | layout = [1,1] 51 | ylabel_index = np.array([1]) 52 | res_path = 'D:\\Repositories\\WPT_EEMD_ML_Machining\\test\\EEMD_Output\\' 53 | n_feature = 7 54 | 55 | # plot the results 56 | fig = plot_results(res_path,param_tuning,feature_ranking,n_feature,methods,clsf_names,cv,layout,ylabel_index) 57 | 58 | 59 | 60 | 61 | # ------------------------------------------------------------------------------ 62 | 63 | # EEMD Transfer Learning 64 | 65 | from WPT_EEMD_ML.EEMD_Transfer_Learning import EEMD_Transfer_Learning 66 | from Plot_Results import plot_results 67 | import numpy as np 68 | 69 | 70 | data_paths = [] 71 | data_paths.append('D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout') 72 | data_paths.append('D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\4p5inch_stickout') 73 | 74 | list_names = [] 75 | list_names.append('time_series_name_2inch.txt') 76 | list_names.append('time_series_name_4p5inch.txt') 77 | 78 | Decomps=[] 79 | Decomps.append('NA') 80 | Decomps.append('NA') 81 | 82 | info_IMFs = [] 83 | info_IMFs.append(2) 84 | info_IMFs.append(1) 85 | 86 | saving = True 87 | param_tuning=False 88 | feature_ranking = False 89 | cv=5 90 | 91 | saving_path = 'D:\Repositories\WPT_EEMD_ML_Machining\\test\EEMD_Output' 92 | 93 | EEMD_Transfer_Learning(data_paths,list_names,Decomps, info_IMFs, cv,param_tuning,feature_ranking,saving,saving_path) 94 | 95 | 96 | # plot the results 97 | 98 | methods = ['EEMD'] 99 | clsf_names = ['SVM','LR','RF','GB'] 100 | cv = 5 101 | layout = [1,1] 102 | ylabel_index = np.array([1]) 103 | res_path = 'D:\\Repositories\\WPT_EEMD_ML_Machining\\test\\EEMD_Output\\' 104 | n_feature = 7 105 | 106 | fig = plot_results(res_path,param_tuning,feature_ranking,n_feature,methods,clsf_names,cv,layout,ylabel_index) 107 | -------------------------------------------------------------------------------- /build/html/_sources/FFT.rst.txt: -------------------------------------------------------------------------------- 1 | .. _FFT: 2 | 3 | Fast Fourier Transform (FFT) 4 | ====================================== 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /build/html/_sources/MATLAB.rst.txt: -------------------------------------------------------------------------------- 1 | .. _MATLAB: 2 | 3 | ========================================= 4 | MATLAB Codes for Wavelet Packet Transform 5 | ========================================= 6 | 7 | MATLAB folder in the `GitHub repository `_ includes four codes. 8 | 9 | * **WP_Energy_Ratio**: Computes the energy ratios of the wavelet packets for specified level of transform for chosen time series. It returns plots which contains energy ratios of each packet for time series, reconstructed time series and their FFT plot. User can define the informative wavelet packet number using these plot. 10 | * **WP_Informative_Packet_Recon**: For selected level of WPT, it reconstructs time series based on chosen informative wavelet packets. It saves the reconstructed time series into specified folder. 11 | * **WP_Frequency_Domain_Features**: Computes the frequency domain features for selected level of Transform by using reconstructed time series with **WP_Informative_Packet_Recon** function. It saves the feature matrix and this feature matrix will be combined with time domain features to be used in classification. 12 | * **Example_Usage**: Provides examples for MATLAB codes. 13 | 14 | **NOTE**: For more details on these functions, please see the function descriptions in MATLAB files. 15 | 16 | Wavelet packet numbering in MATLAB 17 | ---------------------------------- 18 | 19 | The numbering of the wavelet packets obtained after applying WPT can confuse user. Therefore, we give proper instructions here how to obtain and track the wavelet packets correctly. There 20 | are two types of ordering of the wavelet packets and these are natural ordering and frequency 21 | ordering. We show these two types of ordering in Wavelet packet tree in :numref:`PacketNum`. 22 | 23 | .. _PacketNum: 24 | 25 | .. figure:: WPT_Tree_with_Ordering.png 26 | :align: center 27 | 28 | Frequency and natural ordering of wavelet packets (resetting the packet numbers to 1 in each level of transformation) 29 | 30 | The ordering is given in natural ordering in MATLAB. However, we use frequency ordering in this toolbox. In addition, MATLAB does not reset the numbering of wavelet packets to 1 in each level of transform. 31 | For example, if the first level wavelet packets are called first and second wavelet packets, first packet of the second level transform is called third wavelet packet. 32 | Please see :numref:`PacketNum_MATLAB` for MATLAB numbering. 33 | The frequency ordering given in :numref:`PacketNum` is resetting the numbers to 1 in each level. 34 | All wavelet packet numbers given in :cite:`1 ` is based on the ordering provided in :numref:`PacketNum`. 35 | One need to find correponding number for each wavelet packet by using :numref:`PacketNum_MATLAB` to reconstruct the time series correctly based on informative wavelet packets in MATLAB. 36 | Also, ordering in :numref:`PacketNum` is obtained by using the MATLAB function **otnodes()**. 37 | Ordering can differ based on wavelet function used in the transform and level of the transform. 38 | Therefore, ordering in :numref:`PacketNum` should only be used in applications which use wavelet function 'db10'. 39 | 40 | .. _PacketNum_MATLAB: 41 | 42 | .. figure:: WPT_Tree_with_MATLAB_Numbering.png 43 | :align: center 44 | 45 | Frequency and natural ordering of wavelet packets in MATLAB -------------------------------------------------------------------------------- /build/html/_sources/PSD.rst.txt: -------------------------------------------------------------------------------- 1 | .. _FFT: 2 | 3 | Power Spectral Density (PSD) 4 | ============================ -------------------------------------------------------------------------------- /build/html/_sources/TDA.rst.txt: -------------------------------------------------------------------------------- 1 | .. _TDA: 2 | 3 | Topological Data Analysis 4 | ========================= -------------------------------------------------------------------------------- /build/html/_sources/WPT.rst.txt: -------------------------------------------------------------------------------- 1 | .. _WPT: 2 | 3 | Wavelet Packet Transform 4 | ====================================== 5 | 6 | Decision Making about Informative Wavelet Packets 7 | ------------------------------------------------- 8 | .. automodule:: WPT_EEMD_ML.WP_Energy_Ratio 9 | :members: 10 | 11 | 12 | Feature extraction and supervised classification using WPT 13 | ---------------------------------------------------------- 14 | 15 | This algorithm takes time series for turning experiments as input and it generates the feature matrix based on specified WPT level. 16 | The reconstructed Wavelet packets and corresponding frequency domain feature matrices should be computed before running this algorithm. Please see the instructions for Matlab functions on this 17 | documentation before using this algorithm. 18 | The Wavelet packets frequency domain features and datafiles should be in the same folder. 19 | It asks for file paths for the data files. 20 | Algorithm performs the classfication with chosen algorithm and provides results in a np.array. 21 | It plots the mean accuracies and deviations for test and training set with respect to number of features used in classification, if user enables plotting option of the algorithm. 22 | It also prints the total elapsed time. 23 | 24 | .. automodule:: WPT_EEMD_ML.WPT_Feature_Extraction 25 | :members: 26 | 27 | Transfer Learning Application Using WPT 28 | --------------------------------------- 29 | 30 | This function uses transfer learning principles to transfer the knowledge obtained from one cutting configuration to another one. 31 | 32 | .. automodule:: WPT_EEMD_ML.WPT_Transfer_Learning 33 | :members: 34 | 35 | :: 36 | 37 | 38 | # WPT Informative Wavelet Packet Decision Making # ---------------------------- 39 | # parameters 40 | from WPT_EEMD_ML.WP_Energy_Ratio import WP_Energy_Ratio 41 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout' 42 | list_name = 'time_series_name_2inch.txt' 43 | ts_no = [1,13,21] 44 | WF = 'db10' 45 | L=4 46 | case_no=2 47 | layout=[4,4] 48 | plot_recon = True 49 | fs= 10000 50 | 51 | WP_Energy_Ratio(data_path, list_name, ts_no, WF, L, case_no, fs, plot_recon,layout) 52 | 53 | 54 | # WPT Reconstruction of Signals from Informative Wavelet Packets # ------------ 55 | from WPT_EEMD_ML.WPT_Informative_Packet_Recon import WPT_Informative_Packet_Recon 56 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout' 57 | list_name = 'time_series_name_2inch.txt' 58 | label_name = '2_inch_Labels_2Class.npy' 59 | WF = 'db10' 60 | L=4 61 | IWP = 3 62 | # if saving is true, user needs to provide the name of the file which will contain the reconstructed signals 63 | saving = True 64 | recon = WPT_Informative_Packet_Recon(data_path,list_name,WF,L,IWP,saving,'WPT_Output') 65 | # if saving is false, no additional parameter is needed 66 | saving = False 67 | recon = WPT_Informative_Packet_Recon(data_path,list_name,WF,L,IWP,saving) 68 | 69 | 70 | # WPT Feature Extraction# ----------------------------------------------------- 71 | #inputs 72 | from WPT_EEMD_ML.WPT_Feature_Extraction import WPT_Feature_Extraction 73 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\4p5inch_stickout' 74 | list_name = 'time_series_name_4p5inch.txt' 75 | WF = 'db10' 76 | L=4 77 | IWP = 10 78 | label_name = '4p5_inch_Labels_2Class.npy' 79 | fs = 10000 80 | # if saving is false, there is no need for additional parameters 81 | saving = False 82 | feature_mat,labels = WPT_Feature_Extraction(data_path, list_name,label_name,WF,L,IWP,fs,saving) 83 | # if saving is correct, user needs to provide the name of the file which will contain features and the labels 84 | saving = True 85 | feature_mat,labels = WPT_Feature_Extraction(data_path, list_name,label_name,WF,L,IWP,fs,saving,'features') 86 | 87 | 88 | # WPT Classification ---------------------------------------------------------- 89 | 90 | from WPT_EEMD_ML.WPT_Classification import WPT_Classification 91 | 92 | # inputs 93 | data_path = 'D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout' 94 | list_name = 'time_series_name_2inch.txt' 95 | WF = 'db10' 96 | L=4 97 | IWP = 3 98 | label_name = '2_inch_Labels_2Class.npy' 99 | saving = True 100 | fs = 10000 101 | param_tuning = True 102 | feature_ranking = False 103 | cv = 5 104 | saving_path = 'D:\Repositories\WPT_EEMD_ML_Machining\\test\WPT_Output' 105 | save_name = "Reconstructions" 106 | reports = WPT_Classification(data_path,list_name,label_name,WF,L,IWP,fs,cv,param_tuning,feature_ranking,saving,saving_path,save_name) 107 | 108 | # plot the results 109 | 110 | from Plot_Results import plot_results 111 | import numpy as np 112 | 113 | methods = ['WPT'] 114 | clsf_names = ['SVM','LR','RF','GB'] 115 | cv = 5 116 | layout = [1,1] 117 | ylabel_index = np.array([1]) 118 | res_path = 'D:\\Repositories\\WPT_EEMD_ML_Machining\\test\\WPT_Output\\' 119 | param_tuning = True 120 | feature_ranking = False 121 | n_feature = 14 122 | 123 | fig = plot_results(res_path,param_tuning,feature_ranking,n_feature,methods,clsf_names,cv,layout,ylabel_index) 124 | 125 | 126 | # ------------------------------------------------------------------------------ 127 | 128 | # WPT transfer learning 129 | 130 | # add data paths into a list 131 | # first add the paths for training data sets ,then the ones for test cases 132 | # algorithm will assume the first half of the list contains the paths for training cases 133 | # and treat other half of the list as the paths for test cases. 134 | # This is also applicable to other variables such as wavelet functions, 135 | # time series names etc. 136 | from WPT_EEMD_ML.WPT_Transfer_Learning import WPT_Transfer_Learning 137 | 138 | 139 | data_paths = [] 140 | data_paths.append('D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\4p5inch_stickout') 141 | data_paths.append('D:\\Data Archive\\Cutting_Test_Data_Documented\\cutting_tests_processed\\2inch_stickout') 142 | 143 | list_names = [] 144 | list_names.append('time_series_name_4p5inch.txt') 145 | list_names.append('time_series_name_2inch.txt') 146 | 147 | WFs = [] 148 | WFs.append('db10') 149 | WFs.append('db10') 150 | 151 | Levels = [] 152 | Levels.append(4) 153 | Levels.append(4) 154 | 155 | IWPs = [] 156 | IWPs.append(10) 157 | IWPs.append(3) 158 | 159 | label_names = [] 160 | label_names.append('4p5_inch_Labels_2Class.npy') 161 | label_names.append('2_inch_Labels_2Class.npy') 162 | 163 | samp_fs = [] 164 | samp_fs.append(10000) 165 | samp_fs.append(10000) 166 | 167 | saving = False 168 | param_tuning=False 169 | feature_ranking = False 170 | cv=5 171 | 172 | output = WPT_Transfer_Learning(data_paths,list_names,WFs,Levels,IWPs,label_names,samp_fs,cv,param_tuning,feature_ranking,saving) 173 | 174 | 175 | from Plot_Results import plot_results 176 | import numpy as np 177 | 178 | methods = ['WPT'] 179 | clsf_names = ['SVM','LR','RF','GB'] 180 | cv = 5 181 | layout = [1,1] 182 | ylabel_index = np.array([1]) 183 | res_path = 'D:\\Repositories\\WPT_EEMD_ML_Machining\\test\\WPT_Output\\' 184 | param_tuning = True 185 | feature_ranking = False 186 | n_feature = 14 187 | 188 | fig = plot_results(res_path,param_tuning,feature_ranking,n_feature,methods,clsf_names,cv,layout,ylabel_index) 189 | -------------------------------------------------------------------------------- /build/html/_sources/chatter_detection.rst.txt: -------------------------------------------------------------------------------- 1 | .. _chatter_detection: 2 | 3 | Chatter Detection Module Documentation 4 | ====================================== 5 | 6 | This toolbox includes the documentation for the Python codes that extract features by using Wavelet Packet Transform (WPT) 7 | and Ensemble Empirical Mode Decomposition (EEMD) and diagnose chatter in turning process for different cutting configurations. Algorithms are based on the methods 8 | explained in :cite:`1 `. The experimental data in both raw and processed format can be found in Mendeley repository :cite:`Khasawneh2019`. Python and MATLAB codes are available in 9 | `GitHub repository `_. 10 | 11 | .. toctree:: 12 | 13 | Wavelet Packet Transform (WPT) 14 | Ensemble Empirical Mode Decomposition (EEMD) 15 | Dynamic Time Warping (DTW) 16 | -------------------------------------------------------------------------------- /build/html/_sources/citing.rst.txt: -------------------------------------------------------------------------------- 1 | Citing 2 | ======================================================= 3 | 4 | References will be available soon. -------------------------------------------------------------------------------- /build/html/_sources/contributing.rst.txt: -------------------------------------------------------------------------------- 1 | Contributing to ML Toolbox for Machinining 2 | ======================================================= 3 | 4 | Contributions are more than welcome! There are lots of opportunities for potential projects, so please get in touch if you would like to help out. -------------------------------------------------------------------------------- /build/html/_sources/index.rst.txt: -------------------------------------------------------------------------------- 1 | Machine learning toolbox for Machining 2 | *********************************************************************************************************************************** 3 | 4 | .. toctree:: 5 | :numbered: 6 | 7 | Modules 8 | Contributing 9 | License 10 | 11 | References 12 | ========== 13 | .. bibliography:: references.bib 14 | :style: plain 15 | 16 | * :ref:`genindex` 17 | * :ref:`modindex` 18 | * :ref:`search` 19 | 20 | 21 | Contact Information 22 | ******************** 23 | Melih Can Yesilli: yesillim@msu.edu -------------------------------------------------------------------------------- /build/html/_sources/installation.rst.txt: -------------------------------------------------------------------------------- 1 | Getting Started 2 | ================ 3 | 4 | 5 | Requirements 6 | ************** 7 | 8 | Please note that this code is an early version, so many things are not fully up and running yet. 9 | 10 | Installation 11 | ************** 12 | 13 | pip install will be available soon. 14 | -------------------------------------------------------------------------------- /build/html/_sources/license.rst.txt: -------------------------------------------------------------------------------- 1 | License 2 | ======================================================= 3 | 4 | `GNU GENERAL PUBLIC LICENSE `_ 5 | 6 | Version: 3, 29 June 2007 7 | -------------------------------------------------------------------------------- /build/html/_sources/modules.rst.txt: -------------------------------------------------------------------------------- 1 | Table of Contents 2 | ***************** 3 | 4 | .. toctree:: 5 | 6 | Chatter Detection 7 | 8 | -------------------------------------------------------------------------------- /build/html/_sources/surface_texture.rst.txt: -------------------------------------------------------------------------------- 1 | .. _surface_texture: 2 | 3 | Surface Texture Analysis Module Documentation 4 | ============================================== 5 | 6 | The documentation will be available soon. 7 | 8 | -------------------------------------------------------------------------------- /build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /build/html/_static/classic.css: -------------------------------------------------------------------------------- 1 | /* 2 | * classic.css_t 3 | * ~~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- classic theme. 6 | * 7 | * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | @import url("basic.css"); 13 | 14 | /* -- page layout ----------------------------------------------------------- */ 15 | 16 | body { 17 | font-family: sans-serif; 18 | font-size: 100%; 19 | background-color: white; 20 | color: #000; 21 | margin: 0; 22 | padding: 0; 23 | } 24 | 25 | div.document { 26 | background-color: whitesmoke; 27 | } 28 | 29 | div.documentwrapper { 30 | float: left; 31 | width: 100%; 32 | } 33 | 34 | div.bodywrapper { 35 | margin: 0 0 0 20%; 36 | } 37 | 38 | div.body { 39 | background-color: white; 40 | color: black; 41 | padding: 0 20px 30px 20px; 42 | } 43 | 44 | div.footer { 45 | color: #ffffff; 46 | width: 100%; 47 | padding: 9px 0 9px 0; 48 | text-align: center; 49 | font-size: 75%; 50 | } 51 | 52 | div.footer a { 53 | color: #ffffff; 54 | text-decoration: underline; 55 | } 56 | 57 | div.related { 58 | background-color: dimgray; 59 | line-height: 30px; 60 | color: black; 61 | } 62 | 63 | div.related a { 64 | color: #ffffff; 65 | } 66 | 67 | div.sphinxsidebar { 68 | top: 30px; 69 | bottom: 0; 70 | margin: 0; 71 | position: fixed; 72 | overflow: auto; 73 | height: auto; 74 | } 75 | /* this is nice, but it it leads to hidden headings when jumping 76 | to an anchor */ 77 | /* 78 | div.related { 79 | position: fixed; 80 | } 81 | 82 | div.documentwrapper { 83 | margin-top: 30px; 84 | } 85 | */ 86 | 87 | div.sphinxsidebar h3 { 88 | font-family: 'Trebuchet MS', sans-serif; 89 | color: black; 90 | font-size: 1.4em; 91 | font-weight: normal; 92 | margin: 0; 93 | padding: 0; 94 | } 95 | 96 | div.sphinxsidebar h3 a { 97 | color: black; 98 | } 99 | 100 | div.sphinxsidebar h4 { 101 | font-family: 'Trebuchet MS', sans-serif; 102 | color: black; 103 | font-size: 1.3em; 104 | font-weight: normal; 105 | margin: 5px 0 0 0; 106 | padding: 0; 107 | } 108 | 109 | div.sphinxsidebar p { 110 | color: black; 111 | } 112 | 113 | div.sphinxsidebar p.topless { 114 | margin: 5px 10px 10px 10px; 115 | } 116 | 117 | div.sphinxsidebar ul { 118 | margin: 10px; 119 | padding: 0; 120 | color: black; 121 | } 122 | 123 | div.sphinxsidebar a { 124 | color: dimgray; 125 | } 126 | 127 | div.sphinxsidebar input { 128 | border: 1px solid dimgray; 129 | font-family: sans-serif; 130 | font-size: 1em; 131 | } 132 | 133 | 134 | 135 | /* -- hyperlink styles ------------------------------------------------------ */ 136 | 137 | a { 138 | color: #355f7c; 139 | text-decoration: none; 140 | } 141 | 142 | a:visited { 143 | color: #355f7c; 144 | text-decoration: none; 145 | } 146 | 147 | a:hover { 148 | text-decoration: underline; 149 | } 150 | 151 | 152 | 153 | /* -- body styles ----------------------------------------------------------- */ 154 | 155 | div.body h1, 156 | div.body h2, 157 | div.body h3, 158 | div.body h4, 159 | div.body h5, 160 | div.body h6 { 161 | font-family: 'Trebuchet MS', sans-serif; 162 | background-color: dimgray; 163 | font-weight: normal; 164 | color: white; 165 | border-bottom: 1px solid #ccc; 166 | margin: 20px -20px 10px -20px; 167 | padding: 3px 0 3px 10px; 168 | } 169 | 170 | div.body h1 { margin-top: 0; font-size: 200%; } 171 | div.body h2 { font-size: 160%; } 172 | div.body h3 { font-size: 140%; } 173 | div.body h4 { font-size: 120%; } 174 | div.body h5 { font-size: 110%; } 175 | div.body h6 { font-size: 100%; } 176 | 177 | a.headerlink { 178 | color: black; 179 | font-size: 0.8em; 180 | padding: 0 4px 0 4px; 181 | text-decoration: none; 182 | } 183 | 184 | a.headerlink:hover { 185 | background-color: black; 186 | color: white; 187 | } 188 | 189 | div.body p, div.body dd, div.body li, div.body blockquote { 190 | text-align: justify; 191 | line-height: 130%; 192 | } 193 | 194 | div.admonition p.admonition-title + p { 195 | display: inline; 196 | } 197 | 198 | div.admonition p { 199 | margin-bottom: 5px; 200 | } 201 | 202 | div.admonition pre { 203 | margin-bottom: 5px; 204 | } 205 | 206 | div.admonition ul, div.admonition ol { 207 | margin-bottom: 5px; 208 | } 209 | 210 | div.note { 211 | background-color: #eee; 212 | border: 1px solid #ccc; 213 | } 214 | 215 | div.seealso { 216 | background-color: #ffc; 217 | border: 1px solid #ff6; 218 | } 219 | 220 | div.topic { 221 | background-color: #eee; 222 | } 223 | 224 | div.warning { 225 | background-color: #ffe4e4; 226 | border: 1px solid #f66; 227 | } 228 | 229 | p.admonition-title { 230 | display: inline; 231 | } 232 | 233 | p.admonition-title:after { 234 | content: ":"; 235 | } 236 | 237 | pre { 238 | padding: 5px; 239 | background-color: ivory; 240 | color: #333333; 241 | line-height: 120%; 242 | border: 1px solid #ac9; 243 | border-left: none; 244 | border-right: none; 245 | } 246 | 247 | code { 248 | background-color: #ecf0f3; 249 | padding: 0 1px 0 1px; 250 | font-size: 0.95em; 251 | } 252 | 253 | th { 254 | background-color: #ede; 255 | } 256 | 257 | .warning code { 258 | background: #efc2c2; 259 | } 260 | 261 | .note code { 262 | background: #d6d6d6; 263 | } 264 | 265 | .viewcode-back { 266 | font-family: sans-serif; 267 | } 268 | 269 | div.viewcode-block:target { 270 | background-color: #f4debf; 271 | border-top: 1px solid #ac9; 272 | border-bottom: 1px solid #ac9; 273 | } 274 | 275 | div.code-block-caption { 276 | color: #efefef; 277 | background-color: #1c4e63; 278 | } -------------------------------------------------------------------------------- /build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/comment-close.png -------------------------------------------------------------------------------- /build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/comment.png -------------------------------------------------------------------------------- /build/html/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} -------------------------------------------------------------------------------- /build/html/_static/css/fonts/Roboto-Slab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/Roboto-Slab-Bold.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/Roboto-Slab-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 -------------------------------------------------------------------------------- /build/html/_static/css/fonts/Roboto-Slab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/Roboto-Slab-Regular.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/Roboto-Slab-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 -------------------------------------------------------------------------------- /build/html/_static/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /build/html/_static/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /build/html/_static/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-bold-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-bold-italic.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-bold-italic.woff2 -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-bold.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-bold.woff2 -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-normal-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-normal-italic.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-normal-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-normal-italic.woff2 -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-normal.woff -------------------------------------------------------------------------------- /build/html/_static/css/fonts/lato-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/css/fonts/lato-normal.woff2 -------------------------------------------------------------------------------- /build/html/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), 3 | VERSION: '0.1', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | BUILDER: 'html', 7 | FILE_SUFFIX: '.html', 8 | LINK_SUFFIX: '.html', 9 | HAS_SOURCE: true, 10 | SOURCELINK_SUFFIX: '.txt', 11 | NAVIGATION_WITH_KEYS: false 12 | }; -------------------------------------------------------------------------------- /build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/down.png -------------------------------------------------------------------------------- /build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/file.png -------------------------------------------------------------------------------- /build/html/_static/fonts/Inconsolata-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Inconsolata-Bold.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Inconsolata-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Inconsolata-Regular.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Inconsolata.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Inconsolata.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato-Bold.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato-Regular.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bold.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bold.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bold.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bold.woff2 -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bolditalic.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bolditalic.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bolditalic.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-bolditalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-bolditalic.woff2 -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-italic.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-italic.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-italic.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-italic.woff2 -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-regular.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-regular.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-regular.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/Lato/lato-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/Lato/lato-regular.woff2 -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 -------------------------------------------------------------------------------- /build/html/_static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /build/html/_static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /build/html/_static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /build/html/_static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khasawneh-Lab/ML_Toolbox_Machining/89814a747635d9b3a3c7e8f940bc8e24c8d8271a/build/html/_static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /build/html/_static/js/badge_only.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); -------------------------------------------------------------------------------- /build/html/_static/js/html5shiv-printshiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /build/html/_static/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /build/html/_static/js/theme.js: -------------------------------------------------------------------------------- 1 | !function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t