diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..be2d180de32ed15adc756d6e4a389994b4fc3c8e
Binary files /dev/null and b/.DS_Store differ
diff --git a/examples/.DS_Store b/examples/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..e5a5d06f6fd3335cce658fa3ef6c0ea9d1163943
Binary files /dev/null and b/examples/.DS_Store differ
diff --git a/examples/decision_tree/Iris.csv b/examples/decision_tree/Iris.csv
new file mode 100644
index 0000000000000000000000000000000000000000..1bf42f25499fe73c70d9c767cb31163077c07e3e
--- /dev/null
+++ b/examples/decision_tree/Iris.csv
@@ -0,0 +1,151 @@
+Id,SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species
+1,5.1,3.5,1.4,0.2,Iris-setosa
+2,4.9,3.0,1.4,0.2,Iris-setosa
+3,4.7,3.2,1.3,0.2,Iris-setosa
+4,4.6,3.1,1.5,0.2,Iris-setosa
+5,5.0,3.6,1.4,0.2,Iris-setosa
+6,5.4,3.9,1.7,0.4,Iris-setosa
+7,4.6,3.4,1.4,0.3,Iris-setosa
+8,5.0,3.4,1.5,0.2,Iris-setosa
+9,4.4,2.9,1.4,0.2,Iris-setosa
+10,4.9,3.1,1.5,0.1,Iris-setosa
+11,5.4,3.7,1.5,0.2,Iris-setosa
+12,4.8,3.4,1.6,0.2,Iris-setosa
+13,4.8,3.0,1.4,0.1,Iris-setosa
+14,4.3,3.0,1.1,0.1,Iris-setosa
+15,5.8,4.0,1.2,0.2,Iris-setosa
+16,5.7,4.4,1.5,0.4,Iris-setosa
+17,5.4,3.9,1.3,0.4,Iris-setosa
+18,5.1,3.5,1.4,0.3,Iris-setosa
+19,5.7,3.8,1.7,0.3,Iris-setosa
+20,5.1,3.8,1.5,0.3,Iris-setosa
+21,5.4,3.4,1.7,0.2,Iris-setosa
+22,5.1,3.7,1.5,0.4,Iris-setosa
+23,4.6,3.6,1.0,0.2,Iris-setosa
+24,5.1,3.3,1.7,0.5,Iris-setosa
+25,4.8,3.4,1.9,0.2,Iris-setosa
+26,5.0,3.0,1.6,0.2,Iris-setosa
+27,5.0,3.4,1.6,0.4,Iris-setosa
+28,5.2,3.5,1.5,0.2,Iris-setosa
+29,5.2,3.4,1.4,0.2,Iris-setosa
+30,4.7,3.2,1.6,0.2,Iris-setosa
+31,4.8,3.1,1.6,0.2,Iris-setosa
+32,5.4,3.4,1.5,0.4,Iris-setosa
+33,5.2,4.1,1.5,0.1,Iris-setosa
+34,5.5,4.2,1.4,0.2,Iris-setosa
+35,4.9,3.1,1.5,0.1,Iris-setosa
+36,5.0,3.2,1.2,0.2,Iris-setosa
+37,5.5,3.5,1.3,0.2,Iris-setosa
+38,4.9,3.1,1.5,0.1,Iris-setosa
+39,4.4,3.0,1.3,0.2,Iris-setosa
+40,5.1,3.4,1.5,0.2,Iris-setosa
+41,5.0,3.5,1.3,0.3,Iris-setosa
+42,4.5,2.3,1.3,0.3,Iris-setosa
+43,4.4,3.2,1.3,0.2,Iris-setosa
+44,5.0,3.5,1.6,0.6,Iris-setosa
+45,5.1,3.8,1.9,0.4,Iris-setosa
+46,4.8,3.0,1.4,0.3,Iris-setosa
+47,5.1,3.8,1.6,0.2,Iris-setosa
+48,4.6,3.2,1.4,0.2,Iris-setosa
+49,5.3,3.7,1.5,0.2,Iris-setosa
+50,5.0,3.3,1.4,0.2,Iris-setosa
+51,7.0,3.2,4.7,1.4,Iris-versicolor
+52,6.4,3.2,4.5,1.5,Iris-versicolor
+53,6.9,3.1,4.9,1.5,Iris-versicolor
+54,5.5,2.3,4.0,1.3,Iris-versicolor
+55,6.5,2.8,4.6,1.5,Iris-versicolor
+56,5.7,2.8,4.5,1.3,Iris-versicolor
+57,6.3,3.3,4.7,1.6,Iris-versicolor
+58,4.9,2.4,3.3,1.0,Iris-versicolor
+59,6.6,2.9,4.6,1.3,Iris-versicolor
+60,5.2,2.7,3.9,1.4,Iris-versicolor
+61,5.0,2.0,3.5,1.0,Iris-versicolor
+62,5.9,3.0,4.2,1.5,Iris-versicolor
+63,6.0,2.2,4.0,1.0,Iris-versicolor
+64,6.1,2.9,4.7,1.4,Iris-versicolor
+65,5.6,2.9,3.6,1.3,Iris-versicolor
+66,6.7,3.1,4.4,1.4,Iris-versicolor
+67,5.6,3.0,4.5,1.5,Iris-versicolor
+68,5.8,2.7,4.1,1.0,Iris-versicolor
+69,6.2,2.2,4.5,1.5,Iris-versicolor
+70,5.6,2.5,3.9,1.1,Iris-versicolor
+71,5.9,3.2,4.8,1.8,Iris-versicolor
+72,6.1,2.8,4.0,1.3,Iris-versicolor
+73,6.3,2.5,4.9,1.5,Iris-versicolor
+74,6.1,2.8,4.7,1.2,Iris-versicolor
+75,6.4,2.9,4.3,1.3,Iris-versicolor
+76,6.6,3.0,4.4,1.4,Iris-versicolor
+77,6.8,2.8,4.8,1.4,Iris-versicolor
+78,6.7,3.0,5.0,1.7,Iris-versicolor
+79,6.0,2.9,4.5,1.5,Iris-versicolor
+80,5.7,2.6,3.5,1.0,Iris-versicolor
+81,5.5,2.4,3.8,1.1,Iris-versicolor
+82,5.5,2.4,3.7,1.0,Iris-versicolor
+83,5.8,2.7,3.9,1.2,Iris-versicolor
+84,6.0,2.7,5.1,1.6,Iris-versicolor
+85,5.4,3.0,4.5,1.5,Iris-versicolor
+86,6.0,3.4,4.5,1.6,Iris-versicolor
+87,6.7,3.1,4.7,1.5,Iris-versicolor
+88,6.3,2.3,4.4,1.3,Iris-versicolor
+89,5.6,3.0,4.1,1.3,Iris-versicolor
+90,5.5,2.5,4.0,1.3,Iris-versicolor
+91,5.5,2.6,4.4,1.2,Iris-versicolor
+92,6.1,3.0,4.6,1.4,Iris-versicolor
+93,5.8,2.6,4.0,1.2,Iris-versicolor
+94,5.0,2.3,3.3,1.0,Iris-versicolor
+95,5.6,2.7,4.2,1.3,Iris-versicolor
+96,5.7,3.0,4.2,1.2,Iris-versicolor
+97,5.7,2.9,4.2,1.3,Iris-versicolor
+98,6.2,2.9,4.3,1.3,Iris-versicolor
+99,5.1,2.5,3.0,1.1,Iris-versicolor
+100,5.7,2.8,4.1,1.3,Iris-versicolor
+101,6.3,3.3,6.0,2.5,Iris-virginica
+102,5.8,2.7,5.1,1.9,Iris-virginica
+103,7.1,3.0,5.9,2.1,Iris-virginica
+104,6.3,2.9,5.6,1.8,Iris-virginica
+105,6.5,3.0,5.8,2.2,Iris-virginica
+106,7.6,3.0,6.6,2.1,Iris-virginica
+107,4.9,2.5,4.5,1.7,Iris-virginica
+108,7.3,2.9,6.3,1.8,Iris-virginica
+109,6.7,2.5,5.8,1.8,Iris-virginica
+110,7.2,3.6,6.1,2.5,Iris-virginica
+111,6.5,3.2,5.1,2.0,Iris-virginica
+112,6.4,2.7,5.3,1.9,Iris-virginica
+113,6.8,3.0,5.5,2.1,Iris-virginica
+114,5.7,2.5,5.0,2.0,Iris-virginica
+115,5.8,2.8,5.1,2.4,Iris-virginica
+116,6.4,3.2,5.3,2.3,Iris-virginica
+117,6.5,3.0,5.5,1.8,Iris-virginica
+118,7.7,3.8,6.7,2.2,Iris-virginica
+119,7.7,2.6,6.9,2.3,Iris-virginica
+120,6.0,2.2,5.0,1.5,Iris-virginica
+121,6.9,3.2,5.7,2.3,Iris-virginica
+122,5.6,2.8,4.9,2.0,Iris-virginica
+123,7.7,2.8,6.7,2.0,Iris-virginica
+124,6.3,2.7,4.9,1.8,Iris-virginica
+125,6.7,3.3,5.7,2.1,Iris-virginica
+126,7.2,3.2,6.0,1.8,Iris-virginica
+127,6.2,2.8,4.8,1.8,Iris-virginica
+128,6.1,3.0,4.9,1.8,Iris-virginica
+129,6.4,2.8,5.6,2.1,Iris-virginica
+130,7.2,3.0,5.8,1.6,Iris-virginica
+131,7.4,2.8,6.1,1.9,Iris-virginica
+132,7.9,3.8,6.4,2.0,Iris-virginica
+133,6.4,2.8,5.6,2.2,Iris-virginica
+134,6.3,2.8,5.1,1.5,Iris-virginica
+135,6.1,2.6,5.6,1.4,Iris-virginica
+136,7.7,3.0,6.1,2.3,Iris-virginica
+137,6.3,3.4,5.6,2.4,Iris-virginica
+138,6.4,3.1,5.5,1.8,Iris-virginica
+139,6.0,3.0,4.8,1.8,Iris-virginica
+140,6.9,3.1,5.4,2.1,Iris-virginica
+141,6.7,3.1,5.6,2.4,Iris-virginica
+142,6.9,3.1,5.1,2.3,Iris-virginica
+143,5.8,2.7,5.1,1.9,Iris-virginica
+144,6.8,3.2,5.9,2.3,Iris-virginica
+145,6.7,3.3,5.7,2.5,Iris-virginica
+146,6.7,3.0,5.2,2.3,Iris-virginica
+147,6.3,2.5,5.0,1.9,Iris-virginica
+148,6.5,3.0,5.2,2.0,Iris-virginica
+149,6.2,3.4,5.4,2.3,Iris-virginica
+150,5.9,3.0,5.1,1.8,Iris-virginica
diff --git a/examples/decision_tree/main.html b/examples/decision_tree/main.html
new file mode 100644
index 0000000000000000000000000000000000000000..143151d5d27f01ded658cd74b7b00df7c55925b0
--- /dev/null
+++ b/examples/decision_tree/main.html
@@ -0,0 +1,86 @@
+
+
+
+
+<!DOCTYPE html>
+<html lang="en">
+  
+  <head>
+    
+      <meta charset="utf-8">
+      <title>Bokeh Plot</title>
+      
+      
+        
+          
+        
+        
+          
+        <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js"></script>
+        <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js"></script>
+        <script type="text/javascript">
+            Bokeh.set_log_level("info");
+        </script>
+        
+      
+      
+    
+  </head>
+  
+  
+  <body>
+    
+      
+        
+          
+          
+            
+              <div class="bk-root" id="beff73e3-3f8e-418c-883d-a74c6af6e68b" data-root-id="1083"></div>
+            
+          
+        
+      
+      
+        <script type="application/json" id="1268">
+          {"74e96afd-87a4-44e0-9b4d-be3f8e2c99a0":{"defs":[],"roots":{"references":[{"attributes":{},"id":"1103","type":"WheelZoomTool"},{"attributes":{},"id":"1092","type":"LinearScale"},{"attributes":{},"id":"1131","type":"UnionRenderers"},{"attributes":{"axis_label":"Feature Importance Score","coordinates":null,"formatter":{"id":"1127"},"group":null,"major_label_policy":{"id":"1128"},"ticker":{"id":"1099"}},"id":"1098","type":"LinearAxis"},{"attributes":{"coordinates":null,"data_source":{"id":"1082"},"glyph":{"id":"1120"},"group":null,"hover_glyph":null,"muted_glyph":{"id":"1122"},"nonselection_glyph":{"id":"1121"},"view":{"id":"1124"}},"id":"1123","type":"GlyphRenderer"},{"attributes":{"axis":{"id":"1098"},"coordinates":null,"dimension":1,"group":null,"ticker":null},"id":"1101","type":"Grid"},{"attributes":{},"id":"1099","type":"BasicTicker"},{"attributes":{"ticks":[0,1,2,3]},"id":"1138","type":"FixedTicker"},{"attributes":{"label":{"value":" FeatureNumbers"},"renderers":[{"id":"1123"}]},"id":"1135","type":"LegendItem"},{"attributes":{"source":{"id":"1082"}},"id":"1124","type":"CDSView"},{"attributes":{"active_scroll":{"id":"1103"},"tools":[{"id":"1102"},{"id":"1103"},{"id":"1104"},{"id":"1105"},{"id":"1106"},{"id":"1107"},{"id":"1136"}]},"id":"1109","type":"Toolbar"},{"attributes":{},"id":"1090","type":"LinearScale"},{"attributes":{},"id":"1107","type":"HelpTool"},{"attributes":{},"id":"1132","type":"Selection"},{"attributes":{},"id":"1102","type":"PanTool"},{"attributes":{"overlay":{"id":"1108"}},"id":"1104","type":"BoxZoomTool"},{"attributes":{},"id":"1105","type":"SaveTool"},{"attributes":{},"id":"1106","type":"ResetTool"},{"attributes":{"fill_alpha":{"value":0.6},"fill_color":{"value":"#1f77b4"},"hatch_alpha":{"value":0.6},"hatch_color":{"value":"#1f77b4"},"line_alpha":{"value":0.6},"line_color":{"value":"#1f77b4"},"line_width":{"value":2},"top":{"field":"FeatureNumbers"},"width":{"value":0.7},"x":{"field":"__x__values","transform":{"id":"1118"}}},"id":"1120","type":"VBar"},{"attributes":{"bottom_units":"screen","coordinates":null,"fill_alpha":0.5,"fill_color":"lightgrey","group":null,"left_units":"screen","level":"overlay","line_alpha":1.0,"line_color":"black","line_dash":[4,4],"line_width":2,"right_units":"screen","syncable":false,"top_units":"screen"},"id":"1108","type":"BoxAnnotation"},{"attributes":{"below":[{"id":"1094"}],"center":[{"id":"1097"},{"id":"1101"},{"id":"1134"}],"height":400,"left":[{"id":"1098"}],"output_backend":"webgl","renderers":[{"id":"1123"}],"sizing_mode":"fixed","title":{"id":"1084"},"toolbar":{"id":"1109"},"x_range":{"id":"1086"},"x_scale":{"id":"1090"},"y_range":{"id":"1088"},"y_scale":{"id":"1092"}},"id":"1083","subtype":"Figure","type":"Plot"},{"attributes":{"callback":null,"mode":"vline","renderers":[{"id":"1123"}],"tooltips":[["Features","@__x__values_original"],["FeatureNumbers","@{FeatureNumbers}"]]},"id":"1136","type":"HoverTool"},{"attributes":{"click_policy":"hide","coordinates":null,"group":null,"items":[{"id":"1135"}]},"id":"1134","type":"Legend"},{"attributes":{"fill_alpha":{"value":0.2},"fill_color":{"value":"#1f77b4"},"hatch_alpha":{"value":0.2},"hatch_color":{"value":"#1f77b4"},"line_alpha":{"value":0.2},"line_color":{"value":"#1f77b4"},"line_width":{"value":2},"top":{"field":"FeatureNumbers"},"width":{"value":0.7},"x":{"field":"__x__values","transform":{"id":"1118"}}},"id":"1122","type":"VBar"},{"attributes":{"fill_alpha":{"value":0.1},"fill_color":{"value":"#1f77b4"},"hatch_alpha":{"value":0.1},"hatch_color":{"value":"#1f77b4"},"line_alpha":{"value":0.1},"line_color":{"value":"#1f77b4"},"line_width":{"value":2},"top":{"field":"FeatureNumbers"},"width":{"value":0.7},"x":{"field":"__x__values","transform":{"id":"1118"}}},"id":"1121","type":"VBar"},{"attributes":{"code":"\n                                    var labels = {0: '-1.08 &lt; 1 &lt;= -0.82', 1: '1 &gt; 0.64', 2: '1 &lt;= -0.65', 3: '-1.38 &lt; 2 &lt;= -0.28'};\n                                    return labels[tick];\n                                    "},"id":"1116","type":"FuncTickFormatter"},{"attributes":{"axis":{"id":"1094"},"coordinates":null,"group":null,"ticker":null},"id":"1097","type":"Grid"},{"attributes":{"data":{"FeatureNumbers":{"__ndarray__":"Pgd6/cVz2r8VX23t+H+Ov4So0GaymnS/Rjk6zTSrb78=","dtype":"float64","order":"little","shape":[4]},"__x__values":[0,1,2,3],"__x__values_original":["-1.08 &lt; 1 &lt;= -0.82","1 &gt; 0.64","1 &lt;= -0.65","-1.38 &lt; 2 &lt;= -0.28"]},"selected":{"id":"1132"},"selection_policy":{"id":"1131"}},"id":"1082","type":"ColumnDataSource"},{"attributes":{},"id":"1128","type":"AllLabels"},{"attributes":{},"id":"1088","type":"DataRange1d"},{"attributes":{},"id":"1086","type":"DataRange1d"},{"attributes":{},"id":"1130","type":"AllLabels"},{"attributes":{"range":{"id":"1086"}},"id":"1118","type":"Dodge"},{"attributes":{"axis_label":"Features","coordinates":null,"formatter":{"id":"1116"},"group":null,"major_label_orientation":0.7853981633974483,"major_label_policy":{"id":"1130"},"ticker":{"id":"1138"}},"id":"1094","type":"LinearAxis"},{"attributes":{"coordinates":null,"group":null,"text":"Feature Importance Chart"},"id":"1084","type":"Title"},{"attributes":{},"id":"1127","type":"BasicTickFormatter"}],"root_ids":["1083"]},"title":"Bokeh Application","version":"2.4.2"}}
+        </script>
+        <script type="text/javascript">
+          (function() {
+            const fn = function() {
+              Bokeh.safely(function() {
+                (function(root) {
+                  function embed_document(root) {
+                    
+                  const docs_json = document.getElementById('1268').textContent;
+                  const render_items = [{"docid":"74e96afd-87a4-44e0-9b4d-be3f8e2c99a0","root_ids":["1083"],"roots":{"1083":"beff73e3-3f8e-418c-883d-a74c6af6e68b"}}];
+                  root.Bokeh.embed.embed_items(docs_json, render_items);
+                
+                  }
+                  if (root.Bokeh !== undefined) {
+                    embed_document(root);
+                  } else {
+                    let attempts = 0;
+                    const timer = setInterval(function(root) {
+                      if (root.Bokeh !== undefined) {
+                        clearInterval(timer);
+                        embed_document(root);
+                      } else {
+                        attempts++;
+                        if (attempts > 100) {
+                          clearInterval(timer);
+                          console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
+                        }
+                      }
+                    }, 10, root)
+                  }
+                })(window);
+              });
+            };
+            if (document.readyState != "loading") fn();
+            else document.addEventListener("DOMContentLoaded", fn);
+          })();
+        </script>
+    
+  </body>
+  
+</html>
\ No newline at end of file
diff --git a/examples/decision_tree/main.py b/examples/decision_tree/main.py
index 3ca1536be4eebada06be154132b6a7837f20e5e1..9b8f36660f42246d1391e7dfd3f5e13130c0d9ae 100644
--- a/examples/decision_tree/main.py
+++ b/examples/decision_tree/main.py
@@ -1,22 +1,33 @@
 import numpy as np
+import pandas as pd
 
 from sklearn.tree import export_graphviz
 from subprocess import call
 
 from synthetic import *
 from data_vis import *
+#from data_vis import decisionTreemodel
 import config as config
+from decisionTreeVisuals import *
 
 from bokeh.io import curdoc
 from bokeh.models import ColumnDataSource, Select, Slider, Plot, Scatter, Row, Column
 from bokeh.palettes import Spectral6
 
+import pandas_bokeh
+pandas_bokeh.output_notebook()
+pd.set_option('plotting.backend', 'pandas_bokeh')
+# Create Bokeh-Table with DataFrame:
+from bokeh.models.widgets import DataTable, TableColumn
+from bokeh.models import ColumnDataSource
+
 np.random.seed(0)
 
 data = SyntheticData()
 
 config.x, config.y = data.generator()
 
+
 config.spectral = np.hstack([Spectral6] * 20)
 
 colors = [config.spectral[i] for i in config.y]
@@ -25,17 +36,57 @@ config.source = ColumnDataSource(dict(x=config.x[:,0], y=config.x[:,1], colors=c
 
 b = vis_synthetic()
 
-clf_algorithms = [
-    'Decision Tree'
-]
+#decisionTreemodel(config.x, config.y)
+'''
+df = pd.read_csv("/Users/abdullahshah/documents/Spring Term 2021-2022/ci493/NewProject/why-senior-project/examples/decision_tree/Iris.csv")
+
+# data split to features matrix and target vector
+# df stands for the dataframe
+
+# feature matrix
+X = df.iloc[:,0:-1]
+# target vector 
+Y = df.iloc[:,-1:] 
+'''
+test = decisionTreemodel(config.x, config.y)
+#text_output2 = Paragraph(text=test, width=200, height=100)
+
+
+
+#show(p_bar)
+#plots = layout([p_bar])
 
-algorithm_select = Select(value = 'Decision Tree',
-                          title='Select Algorithm:',
-                          width=200,
-                          options=clf_algorithms
-                          )
+fig = figure(x_range=test[0], height=250, title='Feature Importance Scores',
+           toolbar_location=None, tools="")
+# define some data
+x = [1,2,3,4,5]
+y = [4,6,3,7,9]
+# plot a line graph
+fig.vbar( x = test[0], top=test[1], width=0.9)
 
+
+#plot = gridplot(p3, ncols=2, sizing_mode='stretch_both')
+
+#tupleTest = decisionTreemodel()
+# add to document
+
+#tupleTest = decisionTreemodel()
 # add to document
-curdoc().add_root(Row(config.inputs, b))
+curdoc().add_root(Row(config.inputs, b, fig)) #, text_output2))
 curdoc().title = "Decision Tree"
 
+#print(config.x)
+#print(config.y)
+print(test[0])
+print(test[1])
+
+'''
+
+p_bar = test.plot_bokeh.bar(
+    y = 'FeatureNumbers',
+    x = 'Features',
+    ylabel="Feature Importance Score", 
+    title="Feature Importance Chart",
+    alpha=0.6)
+p_bar.xaxis.major_label_orientation = np.pi / 4
+'''
\ No newline at end of file
diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..dbb4114a479af11d9b93b8899626c20655c4038c
Binary files /dev/null and b/src/.DS_Store differ
diff --git a/src/Iris2.csv b/src/Iris2.csv
new file mode 100644
index 0000000000000000000000000000000000000000..1bf42f25499fe73c70d9c767cb31163077c07e3e
--- /dev/null
+++ b/src/Iris2.csv
@@ -0,0 +1,151 @@
+Id,SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species
+1,5.1,3.5,1.4,0.2,Iris-setosa
+2,4.9,3.0,1.4,0.2,Iris-setosa
+3,4.7,3.2,1.3,0.2,Iris-setosa
+4,4.6,3.1,1.5,0.2,Iris-setosa
+5,5.0,3.6,1.4,0.2,Iris-setosa
+6,5.4,3.9,1.7,0.4,Iris-setosa
+7,4.6,3.4,1.4,0.3,Iris-setosa
+8,5.0,3.4,1.5,0.2,Iris-setosa
+9,4.4,2.9,1.4,0.2,Iris-setosa
+10,4.9,3.1,1.5,0.1,Iris-setosa
+11,5.4,3.7,1.5,0.2,Iris-setosa
+12,4.8,3.4,1.6,0.2,Iris-setosa
+13,4.8,3.0,1.4,0.1,Iris-setosa
+14,4.3,3.0,1.1,0.1,Iris-setosa
+15,5.8,4.0,1.2,0.2,Iris-setosa
+16,5.7,4.4,1.5,0.4,Iris-setosa
+17,5.4,3.9,1.3,0.4,Iris-setosa
+18,5.1,3.5,1.4,0.3,Iris-setosa
+19,5.7,3.8,1.7,0.3,Iris-setosa
+20,5.1,3.8,1.5,0.3,Iris-setosa
+21,5.4,3.4,1.7,0.2,Iris-setosa
+22,5.1,3.7,1.5,0.4,Iris-setosa
+23,4.6,3.6,1.0,0.2,Iris-setosa
+24,5.1,3.3,1.7,0.5,Iris-setosa
+25,4.8,3.4,1.9,0.2,Iris-setosa
+26,5.0,3.0,1.6,0.2,Iris-setosa
+27,5.0,3.4,1.6,0.4,Iris-setosa
+28,5.2,3.5,1.5,0.2,Iris-setosa
+29,5.2,3.4,1.4,0.2,Iris-setosa
+30,4.7,3.2,1.6,0.2,Iris-setosa
+31,4.8,3.1,1.6,0.2,Iris-setosa
+32,5.4,3.4,1.5,0.4,Iris-setosa
+33,5.2,4.1,1.5,0.1,Iris-setosa
+34,5.5,4.2,1.4,0.2,Iris-setosa
+35,4.9,3.1,1.5,0.1,Iris-setosa
+36,5.0,3.2,1.2,0.2,Iris-setosa
+37,5.5,3.5,1.3,0.2,Iris-setosa
+38,4.9,3.1,1.5,0.1,Iris-setosa
+39,4.4,3.0,1.3,0.2,Iris-setosa
+40,5.1,3.4,1.5,0.2,Iris-setosa
+41,5.0,3.5,1.3,0.3,Iris-setosa
+42,4.5,2.3,1.3,0.3,Iris-setosa
+43,4.4,3.2,1.3,0.2,Iris-setosa
+44,5.0,3.5,1.6,0.6,Iris-setosa
+45,5.1,3.8,1.9,0.4,Iris-setosa
+46,4.8,3.0,1.4,0.3,Iris-setosa
+47,5.1,3.8,1.6,0.2,Iris-setosa
+48,4.6,3.2,1.4,0.2,Iris-setosa
+49,5.3,3.7,1.5,0.2,Iris-setosa
+50,5.0,3.3,1.4,0.2,Iris-setosa
+51,7.0,3.2,4.7,1.4,Iris-versicolor
+52,6.4,3.2,4.5,1.5,Iris-versicolor
+53,6.9,3.1,4.9,1.5,Iris-versicolor
+54,5.5,2.3,4.0,1.3,Iris-versicolor
+55,6.5,2.8,4.6,1.5,Iris-versicolor
+56,5.7,2.8,4.5,1.3,Iris-versicolor
+57,6.3,3.3,4.7,1.6,Iris-versicolor
+58,4.9,2.4,3.3,1.0,Iris-versicolor
+59,6.6,2.9,4.6,1.3,Iris-versicolor
+60,5.2,2.7,3.9,1.4,Iris-versicolor
+61,5.0,2.0,3.5,1.0,Iris-versicolor
+62,5.9,3.0,4.2,1.5,Iris-versicolor
+63,6.0,2.2,4.0,1.0,Iris-versicolor
+64,6.1,2.9,4.7,1.4,Iris-versicolor
+65,5.6,2.9,3.6,1.3,Iris-versicolor
+66,6.7,3.1,4.4,1.4,Iris-versicolor
+67,5.6,3.0,4.5,1.5,Iris-versicolor
+68,5.8,2.7,4.1,1.0,Iris-versicolor
+69,6.2,2.2,4.5,1.5,Iris-versicolor
+70,5.6,2.5,3.9,1.1,Iris-versicolor
+71,5.9,3.2,4.8,1.8,Iris-versicolor
+72,6.1,2.8,4.0,1.3,Iris-versicolor
+73,6.3,2.5,4.9,1.5,Iris-versicolor
+74,6.1,2.8,4.7,1.2,Iris-versicolor
+75,6.4,2.9,4.3,1.3,Iris-versicolor
+76,6.6,3.0,4.4,1.4,Iris-versicolor
+77,6.8,2.8,4.8,1.4,Iris-versicolor
+78,6.7,3.0,5.0,1.7,Iris-versicolor
+79,6.0,2.9,4.5,1.5,Iris-versicolor
+80,5.7,2.6,3.5,1.0,Iris-versicolor
+81,5.5,2.4,3.8,1.1,Iris-versicolor
+82,5.5,2.4,3.7,1.0,Iris-versicolor
+83,5.8,2.7,3.9,1.2,Iris-versicolor
+84,6.0,2.7,5.1,1.6,Iris-versicolor
+85,5.4,3.0,4.5,1.5,Iris-versicolor
+86,6.0,3.4,4.5,1.6,Iris-versicolor
+87,6.7,3.1,4.7,1.5,Iris-versicolor
+88,6.3,2.3,4.4,1.3,Iris-versicolor
+89,5.6,3.0,4.1,1.3,Iris-versicolor
+90,5.5,2.5,4.0,1.3,Iris-versicolor
+91,5.5,2.6,4.4,1.2,Iris-versicolor
+92,6.1,3.0,4.6,1.4,Iris-versicolor
+93,5.8,2.6,4.0,1.2,Iris-versicolor
+94,5.0,2.3,3.3,1.0,Iris-versicolor
+95,5.6,2.7,4.2,1.3,Iris-versicolor
+96,5.7,3.0,4.2,1.2,Iris-versicolor
+97,5.7,2.9,4.2,1.3,Iris-versicolor
+98,6.2,2.9,4.3,1.3,Iris-versicolor
+99,5.1,2.5,3.0,1.1,Iris-versicolor
+100,5.7,2.8,4.1,1.3,Iris-versicolor
+101,6.3,3.3,6.0,2.5,Iris-virginica
+102,5.8,2.7,5.1,1.9,Iris-virginica
+103,7.1,3.0,5.9,2.1,Iris-virginica
+104,6.3,2.9,5.6,1.8,Iris-virginica
+105,6.5,3.0,5.8,2.2,Iris-virginica
+106,7.6,3.0,6.6,2.1,Iris-virginica
+107,4.9,2.5,4.5,1.7,Iris-virginica
+108,7.3,2.9,6.3,1.8,Iris-virginica
+109,6.7,2.5,5.8,1.8,Iris-virginica
+110,7.2,3.6,6.1,2.5,Iris-virginica
+111,6.5,3.2,5.1,2.0,Iris-virginica
+112,6.4,2.7,5.3,1.9,Iris-virginica
+113,6.8,3.0,5.5,2.1,Iris-virginica
+114,5.7,2.5,5.0,2.0,Iris-virginica
+115,5.8,2.8,5.1,2.4,Iris-virginica
+116,6.4,3.2,5.3,2.3,Iris-virginica
+117,6.5,3.0,5.5,1.8,Iris-virginica
+118,7.7,3.8,6.7,2.2,Iris-virginica
+119,7.7,2.6,6.9,2.3,Iris-virginica
+120,6.0,2.2,5.0,1.5,Iris-virginica
+121,6.9,3.2,5.7,2.3,Iris-virginica
+122,5.6,2.8,4.9,2.0,Iris-virginica
+123,7.7,2.8,6.7,2.0,Iris-virginica
+124,6.3,2.7,4.9,1.8,Iris-virginica
+125,6.7,3.3,5.7,2.1,Iris-virginica
+126,7.2,3.2,6.0,1.8,Iris-virginica
+127,6.2,2.8,4.8,1.8,Iris-virginica
+128,6.1,3.0,4.9,1.8,Iris-virginica
+129,6.4,2.8,5.6,2.1,Iris-virginica
+130,7.2,3.0,5.8,1.6,Iris-virginica
+131,7.4,2.8,6.1,1.9,Iris-virginica
+132,7.9,3.8,6.4,2.0,Iris-virginica
+133,6.4,2.8,5.6,2.2,Iris-virginica
+134,6.3,2.8,5.1,1.5,Iris-virginica
+135,6.1,2.6,5.6,1.4,Iris-virginica
+136,7.7,3.0,6.1,2.3,Iris-virginica
+137,6.3,3.4,5.6,2.4,Iris-virginica
+138,6.4,3.1,5.5,1.8,Iris-virginica
+139,6.0,3.0,4.8,1.8,Iris-virginica
+140,6.9,3.1,5.4,2.1,Iris-virginica
+141,6.7,3.1,5.6,2.4,Iris-virginica
+142,6.9,3.1,5.1,2.3,Iris-virginica
+143,5.8,2.7,5.1,1.9,Iris-virginica
+144,6.8,3.2,5.9,2.3,Iris-virginica
+145,6.7,3.3,5.7,2.5,Iris-virginica
+146,6.7,3.0,5.2,2.3,Iris-virginica
+147,6.3,2.5,5.0,1.9,Iris-virginica
+148,6.5,3.0,5.2,2.0,Iris-virginica
+149,6.2,3.4,5.4,2.3,Iris-virginica
+150,5.9,3.0,5.1,1.8,Iris-virginica
diff --git a/src/WHY.egg-info/PKG-INFO b/src/WHY.egg-info/PKG-INFO
new file mode 100644
index 0000000000000000000000000000000000000000..966ca3b6da9a140b0e0e73911402988621adf106
--- /dev/null
+++ b/src/WHY.egg-info/PKG-INFO
@@ -0,0 +1,85 @@
+Metadata-Version: 2.1
+Name: WHY
+Version: 0.0.1.dev0+a83d626
+Summary: Explainable AI system
+Home-page: https://gitlab.cci.drexel.edu/pjm363/why-senior-project
+Author: Philip Monaco, Abdullah Shah, Ibrahim Elsaid, Jashanpreet Singh, William Lu, Songheng Li
+License: LICENSE.md
+Platform: UNKNOWN
+Requires-Python: >=3.8
+Description-Content-Type: text/markdown
+Provides-Extra: lint
+Provides-Extra: docs
+Provides-Extra: all
+
+# WHY Senior Project
+
+## Installing WHY
+
+There are two way in which the `WHY` package can be installed.
+First, follow the [prerequisite](#prerequisites) instructions.
+IF you do not need to rebuild documentation or make modifications to the library, follow the instructions under [User Installation](#user-installation).
+Otherwise, follow the instructions under [Developer Installation](#developer-installation).
+
+### Prerequisites
+
+The `WHY` requires at least `python3.8` and makes use of a number of third-party libraries. The bare minimum packages are automatically installed when you install `WHY` using `pip`. Additional dependencies for developers are contained in `requirements.txt` file. See the
+
+It's recommended that you use `WHY` within a python virtual environment. 
+Virtual environments are now included natively with Python 3 using `venv`. Instructions to create a virtual environment can be found [here](https://docs.python.org/3/library/venv.html).  
+
+API documentation requires the use of `sphinx` which will require installing `Cmake`.  Installation instructions can be found [here](https://cmake.org/install/).
+
+### User Installation
+
+First you must clone the repository using the following bash command.
+```bash
+pip clone git@gitlab.cci.drexel.edu:pjm363/why-senior-project.git
+```
+
+From the root path of the repository (the folder where `setup.py` is located) `WHY` can be installed using `pip` using the following command. 
+
+```bash
+pip install .
+```
+
+### Developer Installation
+Developers need an additional tool, `clang-format` in order to run the precommit script. 
+
+Install via Ubuntu.
+```bash 
+apt-get install clang-format
+```
+Install via MacOSX with homebrew.
+```bash
+brew install clang-format
+```
+Install via [installer](https://llvm.org/builds/) or using chocolatey via.
+```bash
+choco install llvm
+```
+Install WHY using pip:
+```bash
+pip install -e .
+```
+## Running examples
+From the `examples` directory
+```bash
+bokeh serve --show <name of app folder>
+```
+For a developer option the `--dev` flag can be used to auto refresh server from IDE.
+```bash
+bokeh serve --show <name of app folder> --dev
+```
+## Building API Documentation
+
+To build the API Documentation in HTML format for local browsing, execute the following from the root of the repository.
+```
+cd docs/
+make html
+```
+
+This will also cause any examples contained in `examples` to be generated in the example gallery.  
+All documentation is also built automatically when the `./precommit.sh` script is run.
+
+
diff --git a/src/WHY.egg-info/SOURCES.txt b/src/WHY.egg-info/SOURCES.txt
new file mode 100644
index 0000000000000000000000000000000000000000..59834884dd5805081d7d8e1f00f2df02d9f0d580
--- /dev/null
+++ b/src/WHY.egg-info/SOURCES.txt
@@ -0,0 +1,8 @@
+README.md
+setup.py
+src/WHY.egg-info/PKG-INFO
+src/WHY.egg-info/SOURCES.txt
+src/WHY.egg-info/dependency_links.txt
+src/WHY.egg-info/not-zip-safe
+src/WHY.egg-info/requires.txt
+src/WHY.egg-info/top_level.txt
\ No newline at end of file
diff --git a/src/WHY.egg-info/dependency_links.txt b/src/WHY.egg-info/dependency_links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/src/WHY.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/src/WHY.egg-info/not-zip-safe b/src/WHY.egg-info/not-zip-safe
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/src/WHY.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/src/WHY.egg-info/requires.txt b/src/WHY.egg-info/requires.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e0c87a227f7df1ad1af7b1e909c526942b5ee70e
--- /dev/null
+++ b/src/WHY.egg-info/requires.txt
@@ -0,0 +1,32 @@
+numpy>=1.21
+pandas>=1.3.5
+bokeh>=2.4.2
+matplotlib>=3.5.0
+scikit-learn>=1.0.2
+
+[all]
+numpy>=1.21
+pandas>=1.3.5
+bokeh>=2.4.2
+matplotlib>=3.5.0
+scikit-learn>=1.0.2
+black==21.12b0
+isort==5.10.1
+flake8==4.0.1
+mypy
+Sphinx
+sphinx-gallery
+sphinx-rtd-theme
+m2r2
+
+[docs]
+Sphinx
+sphinx-gallery
+sphinx-rtd-theme
+m2r2
+
+[lint]
+black==21.12b0
+isort==5.10.1
+flake8==4.0.1
+mypy
diff --git a/src/WHY.egg-info/top_level.txt b/src/WHY.egg-info/top_level.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/src/WHY.egg-info/top_level.txt
@@ -0,0 +1 @@
+
diff --git a/src/__pycache__/config.cpython-38.pyc b/src/__pycache__/config.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6a3ce5baa7c74ff19e7faeabff7c6b7887aba51e
Binary files /dev/null and b/src/__pycache__/config.cpython-38.pyc differ
diff --git a/src/__pycache__/data_vis.cpython-38.pyc b/src/__pycache__/data_vis.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2d43249251217d88e6c75c69c399d8e53f0901eb
Binary files /dev/null and b/src/__pycache__/data_vis.cpython-38.pyc differ
diff --git a/src/__pycache__/decisionTreeVisuals.cpython-38.pyc b/src/__pycache__/decisionTreeVisuals.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f7866c1875e2cdc23d9ceb9d9f4acae09a1f2275
Binary files /dev/null and b/src/__pycache__/decisionTreeVisuals.cpython-38.pyc differ
diff --git a/src/__pycache__/synthetic.cpython-38.pyc b/src/__pycache__/synthetic.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..05a587ef03062c5b844db75cce461eb51378dd81
Binary files /dev/null and b/src/__pycache__/synthetic.cpython-38.pyc differ
diff --git a/src/config.py b/src/config.py
index d31dec3e3e335b5b9974d3e9c9065281a0657bff..6ced33fbc139a4e2346c15606c1ae9e98c7b3ae7 100644
--- a/src/config.py
+++ b/src/config.py
@@ -1,8 +1,9 @@
 """
 This is a docstring for config.
 """
-from bokeh.models import Select, Slider, Row, Column
+from bokeh.models import Select, Slider, Row, Column, Dropdown, Paragraph
 from bokeh.layouts import column, row
+#from src.data_vis import *t
 
 x = 0 
 y = 0
@@ -52,5 +53,22 @@ inf_slider = Slider(title='Informative Classes',
                     width=400)
 
 
+#tupleTest = decisionTreemodel()
+
+myMessage = 'You have entered nothing yet: (none)'
+text_output = Paragraph(text=myMessage, width=200, height=100)
+
+
 selects = Row(dataset_select, width=420)
 inputs = Column(selects, samples_slider, classes_slider, inf_slider, features_slider)
+
+
+#menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
+
+#clf_algorithms = [
+ #   'Decision Tree'
+#]
+
+#algorithm_select = Dropdown(label="Dropdown button", button_type="warning", menu=menu)
+                        
+    
\ No newline at end of file
diff --git a/src/data_vis.py b/src/data_vis.py
index c8ac781b3bd487e35c6eaf53f2633e307d45e62a..771bac5bb8920f19101c587dbc2fc26d58fe5058 100644
--- a/src/data_vis.py
+++ b/src/data_vis.py
@@ -3,7 +3,33 @@ This is a docstrings for datavis
 """
 from bokeh.models import ColumnDataSource, Select, Slider, Plot, Scatter, Row, Column
 from bokeh.plotting import figure
-import config as config
+import config as config 
+
+import pandas as pd
+import numpy as np
+import math
+import matplotlib.pyplot as plt
+import seaborn as sns
+
+# sklearn ML libraries/modules
+from sklearn import preprocessing
+from sklearn.tree import DecisionTreeClassifier
+from sklearn.metrics import accuracy_score
+from sklearn.model_selection import train_test_split
+
+# bokeh libraries/modules
+from bokeh.io import output_file, show
+from bokeh.layouts import widgetbox
+#from bokeh.models.Column import widgetbox
+from bokeh.models.widgets import Div
+from bokeh.models.widgets import Paragraph
+from bokeh.models.widgets import PreText
+
+# lime modules
+from lime import submodular_pick
+import lime
+from lime.lime_tabular import LimeTabularExplainer
+from lime import submodular_pick
 
 def vis_synthetic():
     """This is a docstring for datavis
@@ -18,4 +44,67 @@ def vis_synthetic():
 
     b.add_glyph(config.source, glyph)
     
-    return b
\ No newline at end of file
+    return b
+
+'''
+def decisionTreemodel():
+    """This is a docstring for decisionTreeVisuals
+
+    Returns:
+        _type_: _description_
+    """
+    # loading data
+    df = pd.read_csv("src/Iris.csv")
+
+    # data split to features matrix and target vector
+    # df stands for the dataframe
+    # feature matrix
+    X = df.iloc[:,0:-1]
+    # target vector 
+    Y = df.iloc[:,-1:]
+
+    # splitting data into training and test sets
+    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.30, random_state=7)
+
+    # instantiating model
+    model_logreg = DecisionTreeClassifier(max_depth=8, random_state=0)
+
+    # fit model on training set
+    model_logreg.fit(X_train, Y_train)
+
+    # grabbing unique class names
+    class_names=model_logreg.classes_
+
+    # grabbing specific row for model to use to make prediction
+    ex_specie = np.array(X_test.iloc[3]).reshape(1,-1)
+
+    # lime_tabular is a module that contains functions that explain classifiers which use tabular data (matrices).
+    # LimeTabularExplainer is a function that explains predictions of tabular (matrix) data.
+
+    explainer = lime.lime_tabular.LimeTabularExplainer(X_train.values, feature_names=X_train.columns, 
+                                                    class_names=class_names, discretize_continuous=True)
+
+    # grab count of columns from feature matrix
+    featureCount = len(X.columns)
+
+    # explain_instance is a function that generates explanations for a prediction after using LimeTabularExplainer.
+    exp = explainer.explain_instance(X_test.iloc[3],model_logreg.predict_proba,num_features=featureCount,top_labels=1)
+
+    # converting explainations as list
+    tupleTest = exp.as_list()
+
+    # converting tuples to list
+    NewList = [list(x) for x in tupleTest]
+    # converting all elements in list to strings
+    doubleStrList = [[str(s) for s in sublist] for sublist in NewList]
+
+   
+   # print(doubleStrList[0][0])
+    return doubleStrList[0][0]
+
+    
+
+#df = pd.read_csv("src/Iris.csv")
+decisionTreemodel()
+
+'''
diff --git a/src/decisionTreeVisuals.py b/src/decisionTreeVisuals.py
new file mode 100644
index 0000000000000000000000000000000000000000..b3114ed1b0f966e68e3a9648db57530b9c58f909
--- /dev/null
+++ b/src/decisionTreeVisuals.py
@@ -0,0 +1,135 @@
+"""
+This is a docstrings for decisionTreeVisuals
+"""
+
+import pandas as pd
+import numpy as np
+import math
+import matplotlib.pyplot as plt
+import seaborn as sns
+
+# sklearn ML libraries/modules
+from sklearn import preprocessing
+from sklearn.tree import DecisionTreeClassifier
+from sklearn.metrics import accuracy_score
+from sklearn.model_selection import train_test_split
+
+# bokeh libraries/modules
+from bokeh.io import output_file, show
+from bokeh.layouts import widgetbox
+#from bokeh.models.Column import widgetbox
+from bokeh.models.widgets import Div
+from bokeh.models.widgets import Paragraph
+from bokeh.models.widgets import PreText
+
+# lime modules
+from lime import submodular_pick
+import lime
+from lime.lime_tabular import LimeTabularExplainer
+from lime import submodular_pick
+
+import config as config
+
+def decisionTreemodel(X, Y):
+    """This is a docstring for decisionTreeVisuals
+
+    Returns:
+        _type_: _description_
+    """
+    # loading data
+    #df = pd.read_csv("Iris.csv")
+
+    # data split to features matrix and target vector
+    # df stands for the dataframe
+    # feature matrix
+    #X = df.iloc[:,0:-1]
+    # target vector 
+    #Y = df.iloc[:,-1:]
+
+    # splitting data into training and test sets
+    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.30, random_state=7)
+
+    # instantiating model
+    model_logreg = DecisionTreeClassifier(max_depth=8, random_state=0)
+
+    # fit model on training set
+    model_logreg.fit(X_train, Y_train)
+
+    # grabbing unique class names
+    class_names=model_logreg.classes_
+
+    # grabbing specific row for model to use to make prediction
+    #ex_specie = X_test[3, ]
+
+    # lime_tabular is a module that contains functions that explain classifiers which use tabular data (matrices).
+    # LimeTabularExplainer is a function that explains predictions of tabular (matrix) data.
+
+    explainer = lime.lime_tabular.LimeTabularExplainer(X_train, feature_names=Y, 
+                                                    class_names=class_names, discretize_continuous=True)
+
+    # grab count of columns from feature matrix
+    featureCount = len(X)
+
+    # explain_instance is a function that generates explanations for a prediction after using LimeTabularExplainer.
+    exp = explainer.explain_instance(X_test[3],model_logreg.predict_proba,num_features=featureCount)
+
+    # converting explainations as list
+    tupleTest = exp.as_list()
+
+    # converting tuples to list
+    NewList = [list(x) for x in tupleTest]
+    # converting all elements in list to strings
+    doubleStrList = [[str(s) for s in sublist] for sublist in NewList]
+
+    doublestring = ",\n ".join([' '.join([str(c) for c in lst]) for lst in NewList])
+
+    # separating comparisons from feature scores
+    Labels1 = [item[0] for item in NewList]
+   # outlst = " ".join([' '.join([str(c) for c in lst]) for lst in doubleStrList])
+
+   # separating feature scores from comparisons
+    featureNums = [item[1] for item in NewList]
+
+    # grabbing count of number of features to determing number of x axis ticks in the chart
+    count = 0
+    newList = []
+    for i in featureNums:
+        count += 1
+        newList.append(count)
+    #p = figure(width=400, height=400)
+
+
+    #fig = plt.bar(newList, featureNums, align='center')
+    #plt.xticks(newList, Labels1)
+    #plt.xticks(rotation=60, ha='right')
+    #plt.title("Feature Importance graph")
+    #plt.show()
+   
+    #print(doubleStrList[0][0])
+    #return Labels1#, doubleStrList[0][1], doubleStrList[0][2], doubleStrList[0][3]
+    #test = ', \n'.join([i for i in Labels1[0:]])
+
+    dfBokehChart = pd.DataFrame(list(zip(Labels1, featureNums)), columns =['Features', 'FeatureNumbers'])
+
+    return (Labels1, featureNums)
+    #return dfBokehChart
+  #  return p
+
+    
+
+#df = pd.read_csv("src/Iris.csv")
+#decisionTreemodel()
+
+# put the below in config
+'''
+clf_algorithms = [
+    'Decision Tree'
+]
+
+algorithm_select = Select(value = 'Decision Tree',
+                        title='Select Algorithm:',
+                        width=200,
+                        options=clf_algorithms
+                        )
+                        
+'''
\ No newline at end of file