Professional fighting and the world of Clojure // Exploring fighters and their fights with the Clojure programming language.
NOTE: This was written in a Gorilla REPL and is known to not format/indent Clojure code correctly with certain fonts
Part 1 Viewable https://cdn.rawgit.com/runexec/ufc-clojure/master/html/part1.html?cdn=1
Part 1 Raw https://github.com/runexec/ufc-clojure
(ns ufc  (:require    [gorilla-plot.core :as plot]   [gorilla-renderable.core :as r]   [gorilla-repl.html :as h]   [clojure.pprint :refer [pprint                           print-table]]   [clojure.data.json :as json]    [clojure.string :as s]   [hiccup.core :refer [html]]));; Define the default dataset file(def stats-json-fp "complete-fighter-stats.json");; Define the default JSON key(def entry-point  "Default JSON key for main data"  "fighters");; Function gets the JSON value of entry-point(defn stats*  "Loads JSON file and returns entry-point value."  ([fp] (stats* fp entry-point))  ([fp entry-point]     (-> fp         slurp         json/read-str         (get entry-point {}))));; Create a version of stats* that caches the results(let [f (memoize stats*)]  (defn stats  "Loads JSON file and returns cached entry-point value."  ([]     (f stats-json-fp))  ([^:String fp]      (f fp entry-point))  ([^:String fp     ^:String entry-point]     (f fp entry-point))));; Bruteforce numeric type enforcement(defn enforce-type  "Integer first, Float second, original object on fail"  [x]  (try    (Integer/parseInt x)    (catch Exception ex      (try        (Float/parseFloat x)        (catch Exception ex x)))));; The function used to modify fighter-without-fights fn(defn recursive-enforce-type  "recursively calls enforce-type on a fighter map"  [x]  (reduce merge          (for [[k v] x                :let [f (if-not (map? v)                          enforce-type                          recursive-enforce-type)]]            (hash-map k (f v)))));; Add recursive-enforce-type to this fn(defn fighter-without-fights  "Returns a fighter without fights collection"  [fighter-map]  (recursive-enforce-type   (dissoc fighter-map "Fights")))(defn ->numerics  "Recursively filters for numeric values from a fighter map"  [x]  (let [data (recursive-enforce-type x)]    (reduce merge            (for [[k v] data]              (if-not (map? v)                (if-not (number? v)                  {}                  (hash-map k v))                (->numerics v))))))(defn without  "Removes values from a fighter map"  [x & ks]  (apply dissoc x ks))(defn ->numeric-map  "Returns numeric map without IDs"  [x]  (-> x      fighter-without-fights      ->numerics      (without "MMAID"               "WeightClassID"               "FighterID")))(defn ->html [x]  (h/html-view (html x)))#'ufc/->htmlx-gen-get-it fn makes a xform that calls enforce-type on a specified collection value. (def x-...) forms call x-gen-get-it to create a representative xformxxxxxxxxxx(defn x-gen-get-it [get-in-coll]  (map #(-> %            (get-in get-in-coll 0)            enforce-type)))(def x-age  (x-gen-get-it ["Age"]))(def x-previous  (x-gen-get-it ["Previous"]))(def x-current  (x-gen-get-it ["Current"]))(def x-striking-defense  (x-gen-get-it ["StrikingDefense"]))(def x-no-contests  (x-gen-get-it ["NoContests"]))(def x-takedown-defense  (x-gen-get-it ["TakedownDefense"]))(def x-kd-average  (x-gen-get-it ["KDAverage"]))(def x-takedown-average  (x-gen-get-it ["TakedownAverage"]))(def x-weight  (x-gen-get-it ["Weight"]))(def x-wins  (x-gen-get-it ["Wins"]))(def x-draws  (x-gen-get-it ["Draws"]))(def x-reach  (x-gen-get-it ["Reach"]))(def x-height  (x-gen-get-it ["Height"]))(def x-takedown-accuracy  (x-gen-get-it ["TakedownAccuracy"]))(def x-slpm  (x-gen-get-it ["SLpM"]))(def x-submissions-average  (x-gen-get-it ["SubmissionsAverage"]))(def x-losses  (x-gen-get-it ["Losses"]))(def x-average-fight-time-seconds  (x-gen-get-it ["AverageFightTime_Seconds"]))(def x-striking-accuracy  (x-gen-get-it ["StrikingAccuracy"]))(def x-sapm  (x-gen-get-it ["SApM"]))(def x-numeric-map  (map ->numeric-map));; Testing the above by using x-age and x-losses;; on a random fighter.(let [fighter (rand-nth (stats))      fm (->numeric-map fighter)      finto #(first (into [] % [fm]))]  (println   (format "Someone is %s years old with %s losses"           (finto x-age)           (finto x-losses))))Someone is 29 years old with 3 losses
        nilget-numeric-stats fn chains x-numeric-map with an arbitrary xform and returns a lazy transformer for all fighters.xxxxxxxxxx(defn get-numeric-stats [xform]  (sequence (comp x-numeric-map                  xform)            (stats)));; Testing with x-age(->> x-age     get-numeric-stats     rand-nth     (format "%s is a random age")     pprint)"34 is a random age"
        nilScroll beyond the code if you just want the chart
frequent fn takes a mixed or single type collection. 
Returns a collection of distinct values and a count of each occurrence 
within the provided collection. Examplel => {:value "abc" :count 1}frequent-chart fn takes a collection and some optional charting options. Returns a chart displaying the results of frequent.xxxxxxxxxx;; Freq finding fn(defn frequent [coll]  (let [uniq (-> coll distinct sort)        freq (fn [x coll]               (let [t (transient [])]                 (doseq [v coll]                   (if (= x v) (conj! t v)))                 (count t)))]    (map #(hash-map :value %                    :count (freq % coll))         uniq)));; Similar to plot/histogram(defn frequent-chart [coll & opts]  (let [freq (frequent coll)        labels (map :value freq)        plots (map :count freq)        data [labels plots]        call (if-not (seq opts)               data               (into data opts))]    (apply plot/bar-chart call)));; Generate chart(let [ages (get-numeric-stats x-age)      sorted-ages (sort ages)                  opts [:plot-size 600            :aspect-ratio 2.5]       xys (map #(let [{x :value y :count} %]                   [x y])                (frequent ages))]    ;; Chart Header    [(->html [:div             [:h1 "Age of fighters"]            [:h2 "x = age"]             [:h2 "y = number of fighters"]])      ;; Bar Chart      (plot/compose    (apply frequent-chart           ages           :color "red"           opts)          ;; Line Graph    (apply plot/list-plot           xys           :color "brown"           :joined true           opts))])[Age of fighters
x = age
y = number of fighters
 ]Scroll beyond the code if you just want the chart
xxxxxxxxxx;; Gender identifiers(defn female?  [fighter]  (boolean    (try      (re-find (re-pattern ".*women.*")               (-> fighter                   (get-in ["UFCWeightClass"                            "Description"]                           "default-is-male")                   s/lower-case))      (catch NullPointerException ex                  ;; Fighter has a nil description          ;; assuming male                  false))))(defn male?  [fighter]  (not (female? fighter)));; Fighters grouped by gender(def females (filter female? (stats)))(def males (filter male? (stats)));; Chart found/diffs(let [cm (count males)      cf (count females)      more (if (= cm cf)             ["There are an equal amount." 0]             (condp = (max cm cf)               cf ["More women than men"                   (- cf cm)]               cm ["More men than women"                   (- cm cf)]))]    ;; Chart Header    [(->html [:h1 "Gender of Fighters"])      ;; Diff Chart       (plot/bar-chart ["Female" "Male"]                    [(count females)                     (count males)]                   :color "purple")      ;; Diff Footer      (->html    [:div     [:h2 {:style "color:red;"}      (first more)]     [:h2 {:style "color:blue;"}      (str "Diff Amount: " (second more))]])])[Gender of Fighters
  More men than women
Diff Amount: 514
]Scroll beyond the code if you just want the chart
mf-header fn generates chart/graph header information with or without optional color arguments.mf-compare fn compares two fighters of the opposite gender and returns a single chart.xxxxxxxxxx;; Comparative colors(def male-color "deepskyblue")(def female-color "crimson")(def tied-color "green");; Legend Header fn(defn mf-header  ([] (mf-header male-color                 female-color                 tied-color))  ([male-color    female-color    tied-color]      ;; Header Local HTML Header fn        (let [-html (fn [s color]                   [:h2                    {:style (format "color:%s;" color)}                    s])]              ;; Return HTML              (->html [:div                                (-html "Female" female-color)                (-html "Male" male-color)                (-html "Tied (when applied)" tied-color)                (-html "Zero/Blank" "black")]))));; Compare and Chart fn(defn mf-compare  ([label    male    female]     (mf-compare label                 male                 male-color                 female                 female-color                 tied-color))  ([label    male    male-color    female    female-color    tied-color]      ;; Local Charting fn        (let [chart (fn [color value]                   (plot/bar-chart [label]                                   [value]                                   :opacity 0.60                                   :aspect-ratio 0.25                                   :plot-size 80                                   :color color))                      ;; Default Value Display Order                      default [(chart female-color female)                    (chart male-color male)]]              ;; Greatest Value Set Behind Lowest (if not tied)              (if (= male female)               (chart tied-color male)         (apply          plot/compose          (if (< male female)            default            (reverse default)))))));; Age comparison between two random fighters;; one male;; one female(let [k "Age"      rand-age #(-> %                    rand-nth                    ->numeric-map                    (get k))]    ;; Chart Header    [(->html [:h1 "Comparing Genders - An Example"])   (mf-header)   (->html [:h2 "Some random fighters"])      ;; Comparison Chart      (mf-compare k               (rand-age males)               (rand-age females))])[Comparing Genders - An Example
 Female
Male
Tied (when applied)
Zero/Blank
 Some random fighters
 ]Scroll beyond the code if you just want the chart
x
;; Not the same as get-numeric-stats(defn numeric-map-attr  [data xform]  (let [xform (map #(sequence (comp x-numeric-map                                    xform)                              [%]))]    (sequence xform data)))(let [age #(numeric-map-attr % x-age)      females (age females)      males (age males)      xcapable (fn [f]                 #(->> %                       (mapcat identity)                       (apply f)))      xmax (xcapable max)      xmin (xcapable min)]  [(->html [:h1 "Youngest & Oldest Fighters"])   (mf-header)   (mf-compare "Oldest"               (xmax males)               (xmax females))   (mf-compare "Youngest"               (xmin males)               (xmin females))])[Youngest & Oldest Fighters
 Female
Male
Tied (when applied)
Zero/Blank
  ]Scroll beyond the code if you just want the chart
xxxxxxxxxx;; Mean, Median, Mode, and Range(defn mean  [& xs]  (float   (/ (reduce + xs)      (count xs))))(defn median  [& xs]  (let [sz (count xs)        sz (if-not (odd? sz) sz (inc sz))        half (dec (float (quot sz 2)))]    (if (<= sz 2)      (first xs)      (-> xs          sort          (nth half)))))(defn mode  [& xs]  (let [t (transient {:count 0 :value 0})]    (doseq [x xs            :let [found (filter #{x} xs)                  c (count found)]]      (if (< (:count t) c)                     (assoc! t :count c :value x)))    (:value t)))(defn range*  [& xs]  (let [[l g] ((juxt first last)               (sort xs))]    (- g l)));; Generic Male & Female Comparison Chart(defn mf-compare-*  [f   label   male   female]  (let [f (partial apply f)]    (mf-compare label                (f male)                (f female))));; Chart fn for Mean, Median, Mode, and Range(defn mf-mean  [male   female]  (mf-compare-* mean "Mean" male female))(defn mf-median  [male   female]  (mf-compare-* median "Median" male female))(defn mf-mode  [male   female]  (mf-compare-* mode "Mode" male female))(defn mf-range  [male   female]  (mf-compare-* range* "Range" male female));; A combination of calculations(defn m3r  [male   female]  (for [[t f] [["Mean" mf-mean]               ["Median" mf-median]               ["Mode" mf-mode]               ["Range" mf-range]]]    (f male female)));; An Example of M3R[(->html [:h1 "Fake Numbers - A M3R Example"]) (mf-header) (m3r [1 2 3] [4 5 6])][Fake Numbers - A M3R Example
 Female
Male
Tied (when applied)
Zero/Blank
 (   )]Scroll beyond the code if you just want the chart
xxxxxxxxxx(defn numeric-map-attr-x*  [data xform]  (reduce into          []          (numeric-map-attr data xform)))(defn females-numeric-x  [xform]  (numeric-map-attr-x* females xform))(defn fnx  [xform]  (females-numeric-x xform))(defn males-numeric-x  [xform]  (numeric-map-attr-x* males xform))(defn mnx  [xform]  (males-numeric-x xform))[(->html [:h1 "Fighter Age M3R"]) (mf-header) (m3r (mnx x-age)      (fnx x-age))][Fighter Age M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )](map (fn [[s x]]       (vector        (->html [:h1 (format "Fighter %s M3R" s)])        (mf-header)        (m3r (mnx x)             (fnx x))))     [["Age" x-age]      ["AverageFightTime_Seconds" x-average-fight-time-seconds]      ["Current" x-current]      ["Draws" x-draws]      ["Height" x-height]      ["KDAverage" x-kd-average]      ["Losses" x-losses]      ["NoContests" x-no-contests]      ["Previous" x-previous]      ["Reach" x-reach]      ["SApM" x-sapm]      ["SLpM" x-slpm]      ["StrikingAccuracy" x-striking-accuracy]      ["StrikingDefense" x-striking-defense]      ["SubmissionsAverage" x-submissions-average]      ["TakedownAccuracy" x-takedown-accuracy]      ["TakedownDefense" x-takedown-defense]      ["Weight" x-weight]      ["Wins" x-wins]])([Fighter Age M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter AverageFightTime_Seconds M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Current M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Draws M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Height M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter KDAverage M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Losses M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter NoContests M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Previous M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Reach M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter SApM M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter SLpM M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter StrikingAccuracy M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter StrikingDefense M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter SubmissionsAverage M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter TakedownAccuracy M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter TakedownDefense M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Weight M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )] [Fighter Wins M3R
 Female
Male
Tied (when applied)
Zero/Blank
 (   )])Scroll beyond the code if you just want the chart
xxxxxxxxxx(def x-weight-class  (map #(get-in % ["UFCWeightClass" "Description"])))(let [call #(frequent (sequence x-weight-class %))      all (call (stats))]  (for [{title :value v :count} (sort-by :count all)        :when title]    [(->html [:div              [:h1 title]              [:h2 "y = # of fighters"]])     (plot/bar-chart [title]                     [v]                     :plot-size 80                     :aspect-ratio 0.30)]))([Women's Bantamweight
y = # of fighters
 ] [Flyweight
y = # of fighters
 ] [Heavyweight
y = # of fighters
 ] [Light Heavyweight
y = # of fighters
 ] [Bantamweight
y = # of fighters
 ] [Featherweight
y = # of fighters
 ] [Middleweight
y = # of fighters
 ] [Welterweight
y = # of fighters
 ] [Lightweight
y = # of fighters
 ])xxxxxxxxxx(def x-fighting-out-of   (map #(get % "FightingOutOf")))(def x-fighting-out-of-city  (comp   x-fighting-out-of   (map #(get % "City"))))(def x-fighting-out-of-state  (comp   x-fighting-out-of   (map #(get % "State"))))(def x-fighting-out-of-country  (comp   x-fighting-out-of   (map #(get % "Country"))))(->> females     (sequence x-fighting-out-of-city)     (take 3)     (reduce #(str %1 ", " %2))     (str "First 3 Example: Fighting out of => ")     pprint)"First 3 Example: Fighting out of => Las Vegas, Victoria, San Diego"
        nilScroll beyond the code if you just want the chart
xxxxxxxxxx(defn chart-horizontal-percent-bars  [xform   limit   data   data-color   bar-color]  (as-> data x              (sequence xform x)        (frequent x)        (sort-by :count x)        (reverse x)        (take limit x)        (let [cs (map :count x)              amount (reduce + cs)              per (memoize                   (fn [count]                     (Float/parseFloat                      (format "%3.3f"                              (* 100.0                                 (float                                  (/ count amount)))))))]          (->html           (into [:table                  {:style "tr td {border-style:none;padding:10px;}"}]                                  (for [{:keys [value count]} x                       :let [p (per count)]]                   [:tr                     [:td (or value "No Record :(")]                    [:td p "%"]                    [:td.container                     (for [f (range 0.001 101)]                       [:span {:style                               (format                                "background:%s;"                                (if (<= f p)                                  data-color                                  bar-color))}                        " "])]]))))))  (chart-horizontal-percent-bars  x-fighting-out-of-city                                20                                females                                female-color                                "black")Las Vegas 12.5%                                                                                                       Spokane 8.333%                                                                                                       Glendale 8.333%                                                                                                       Victoria 4.167%                                                                                                       Venice 4.167%                                                                                                       Utrecht 4.167%                                                                                                       Temecula 4.167%                                                                                                       Sioux Falls 4.167%                                                                                                       San Diego 4.167%                                                                                                       Salvador 4.167%                                                                                                       Port Colborne 4.167%                                                                                                       Pleasant Hill 4.167%                                                                                                       Niteroi 4.167%                                                                                                       Moscow 4.167%                                                                                                       Montreal 4.167%                                                                                                       Marituba 4.167%                                                                                                       Kelowna 4.167%                                                                                                       Gaffney 4.167%                                                                                                       Colorado Springs 4.167%                                                                                                       Cleveland 4.167%                                                                                                       
xxxxxxxxxx(defn recursive-flatten-map  [init-map m]  (if-not (seq m)    init-map    (let [[k v] (first m)]      (if-not (map? v)        (recur (assoc init-map k v)               (rest m))        (recur init-map               (into (rest m) v))))))(defn flatten-fighter  [fighter]  (as-> fighter f      (without f "Fights")      (recursive-flatten-map {} f)      (let [t (transient {:fighter f})]        (doseq [x ["Abbreviation"                   "AverageFightTime"                   "Current"                   "DOB"                   "Description"                   "FighterID"                   "CareerStats"                   "MMAID"                   "Name"                   "NickName"                   "Previous"                   "WeightClassID"                   "Type"]                :let [f (:fighter t)]]          (assoc! t :fighter (without f x)))        (:fighter t))))(-> females rand-nth flatten-fighter pprint){"Age" "30",
 "Country" "USA",
 "StrikingDefense" "57.73",
 "NoContests" "0",
 "TakedownDefense" "60.00",
 "KDAverage" "0.0000",
 "TakedownAverage" "2.7493",
 "Weight" "135",
 "Wins" "9",
 "Draws" "0",
 "Reach" "66.0",
 "Height" "66",
 "TakedownAccuracy" "50.00",
 "SLpM" "3.6334",
 "SubmissionsAverage" "0.3235",
 "City" "Lafayette",
 "State" "Louisiana",
 "LastName" "Carmouche",
 "Losses" "5",
 "AverageFightTime_Seconds" "696",
 "Stance" "Orthodox",
 "FirstName" "Liz",
 "StrikingAccuracy" "55.61",
 "SApM" "2.9757"}
        nilScroll beyond the code if you just want the chart
xxxxxxxxxx(extend-type clojure.lang.LazyTransformer  r/Renderable  (render [self]    {:type :list-like     :open "<span class='clj-lazy-seq'>(</span>"     :close "<span class='clj-lazy-seq'>)</span>"     :separator " "     :items (map r/render self)     :value (pr-str self)}))(defn chart-horizontal-fighters  [limit    fighters   title-prefix   data-color   bar-color]  (let [data (map flatten-fighter fighters)        ks (-> data rand-nth keys)        xform (fn [x] (map #(get % x)))]    (sequence (comp               (map #(vector (name %) (xform %)))               (map (fn [[title xform]]                      (lazy-seq                       [(->html [:h1 (str title-prefix " " title)])                        (chart-horizontal-percent-bars xform                                                       limit                                                       data                                                       data-color                                                       bar-color)]))))               (sort ks))))(def female-horizontal-charts  (chart-horizontal-fighters 5 females "Female Top 5" female-color "black"))(def male-horizontal-charts   (chart-horizontal-fighters 5 males "Male Top 5" male-color "black"))(def horizontal-charts  (chart-horizontal-fighters 5 (stats) "All Fighters Top 5" "orange" "black"))horizontal-charts((All Fighters Top 5 Age
 30 21.509%                                                                                                       32 20.755%                                                                                                       31 20.377%                                                                                                       27 18.868%                                                                                                       28 18.491%                                                                                                       
) (All Fighters Top 5 AverageFightTime_Seconds
 900 79.13%                                                                                                       No Record :( 9.565%                                                                                                       609 4.348%                                                                                                       741 3.478%                                                                                                       713 3.478%                                                                                                       
) (All Fighters Top 5 City
 Rio de Janeiro 39.024%                                                                                                       Sao Paulo 19.512%                                                                                                       San Diego 14.634%                                                                                                       Salvador 14.634%                                                                                                       Makhachkala 12.195%                                                                                                       
) (All Fighters Top 5 Country
 USA 62.222%                                                                                                       Brazil 22.889%                                                                                                       Canada 6.222%                                                                                                       United Kingdom 4.667%                                                                                                       Japan 4.0%                                                                                                       
) (All Fighters Top 5 Draws
 0 83.944%                                                                                                       1 13.264%                                                                                                       2 2.094%                                                                                                       7 0.349%                                                                                                       3 0.349%                                                                                                       
) (All Fighters Top 5 FirstName
 Chris 24.39%                                                                                                       Mike 21.951%                                                                                                       Matt 19.512%                                                                                                       Josh 17.073%                                                                                                       Anthony 17.073%                                                                                                       
) (All Fighters Top 5 Height
 69 21.549%                                                                                                       72 21.212%                                                                                                       71 19.529%                                                                                                       70 18.855%                                                                                                       68 18.855%                                                                                                       
) (All Fighters Top 5 KDAverage
 0.0000 91.971%                                                                                                       No Record :( 4.015%                                                                                                       1.0000 2.19%                                                                                                       0.3333 1.095%                                                                                                       12.6761 0.73%                                                                                                       
) (All Fighters Top 5 LastName
 Silva 36.364%                                                                                                       Johnson 22.727%                                                                                                       Santos 18.182%                                                                                                       Miller 13.636%                                                                                                       de Lima 9.091%                                                                                                       
) (All Fighters Top 5 Losses
 2 23.662%                                                                                                       3 21.972%                                                                                                       1 21.972%                                                                                                       4 16.338%                                                                                                       5 16.056%                                                                                                       
) (All Fighters Top 5 NoContests
 0 84.495%                                                                                                       1 14.286%                                                                                                       2 1.22%                                                                                                       
) (All Fighters Top 5 Reach
 74.0 21.739%                                                                                                       70.0 20.435%                                                                                                       71.0 19.565%                                                                                                       73.0 19.13%                                                                                                       72.0 19.13%                                                                                                       
) (All Fighters Top 5 SApM
 No Record :( 42.308%                                                                                                       0.0000 19.231%                                                                                                       2.7333 15.385%                                                                                                       3.1333 11.538%                                                                                                       1.2667 11.538%                                                                                                       
) (All Fighters Top 5 SLpM
 No Record :( 37.931%                                                                                                       0.0000 20.69%                                                                                                       2.7333 13.793%                                                                                                       1.8000 13.793%                                                                                                       1.4000 13.793%                                                                                                       
) (All Fighters Top 5 Stance
 Orthodox 74.39%                                                                                                       Southpaw 17.422%                                                                                                       No Record :( 5.749%                                                                                                       Switch 2.265%                                                                                                       Open Stance 0.174%                                                                                                       
) (All Fighters Top 5 State
 No Record :( 50.691%                                                                                                       California 25.346%                                                                                                       England 8.756%                                                                                                       Texas 7.834%                                                                                                       New York 7.373%                                                                                                       
) (All Fighters Top 5 StrikingAccuracy
 No Record :( 48.148%                                                                                                       50.00 14.815%                                                                                                       0.00 14.815%                                                                                                       42.68 11.111%                                                                                                       40.00 11.111%                                                                                                       
) (All Fighters Top 5 StrikingDefense
 No Record :( 42.857%                                                                                                       66.67 17.857%                                                                                                       33.33 14.286%                                                                                                       100.00 14.286%                                                                                                       71.71 10.714%                                                                                                       
) (All Fighters Top 5 SubmissionsAverage
 0.0000 86.957%                                                                                                       No Record :( 4.783%                                                                                                       0.5000 4.348%                                                                                                       1.0000 2.174%                                                                                                       2.0000 1.739%                                                                                                       
) (All Fighters Top 5 TakedownAccuracy
 No Record :( 31.863%                                                                                                       0.00 25.0%                                                                                                       50.00 15.196%                                                                                                       33.33 15.196%                                                                                                       100.00 12.745%                                                                                                       
) (All Fighters Top 5 TakedownAverage
 0.0000 70.0%                                                                                                       2.0000 9.333%                                                                                                       1.0000 8.667%                                                                                                       No Record :( 7.333%                                                                                                       3.0000 4.667%                                                                                                       
) (All Fighters Top 5 TakedownDefense
 No Record :( 30.286%                                                                                                       100.00 24.571%                                                                                                       0.00 17.714%                                                                                                       66.67 14.286%                                                                                                       50.00 13.143%                                                                                                       
) (All Fighters Top 5 Weight
 155 25.734%                                                                                                       170 23.476%                                                                                                       135 20.316%                                                                                                       185 15.35%                                                                                                       145 15.124%                                                                                                       
) (All Fighters Top 5 Wins
 8 21.649%                                                                                                       12 21.134%                                                                                                       11 20.103%                                                                                                       9 19.588%                                                                                                       14 17.526%                                                                                                       
))xxxxxxxxxxmale-horizontal-charts((Male Top 5 Age
 30 21.912%                                                                                                       32 20.717%                                                                                                       31 19.92%                                                                                                       27 19.522%                                                                                                       28 17.928%                                                                                                       
) (Male Top 5 AverageFightTime_Seconds
 900 78.846%                                                                                                       No Record :( 8.654%                                                                                                       609 4.808%                                                                                                       741 3.846%                                                                                                       713 3.846%                                                                                                       
) (Male Top 5 City
 Rio de Janeiro 40.0%                                                                                                       Sao Paulo 20.0%                                                                                                       San Diego 15.0%                                                                                                       Salvador 12.5%                                                                                                       Makhachkala 12.5%                                                                                                       
) (Male Top 5 Country
 USA 62.028%                                                                                                       Brazil 23.349%                                                                                                       Canada 5.425%                                                                                                       United Kingdom 4.953%                                                                                                       Japan 4.245%                                                                                                       
) (Male Top 5 Draws
 0 83.241%                                                                                                       1 13.812%                                                                                                       2 2.21%                                                                                                       7 0.368%                                                                                                       3 0.368%                                                                                                       
) (Male Top 5 FirstName
 Chris 24.39%                                                                                                       Mike 21.951%                                                                                                       Matt 19.512%                                                                                                       Josh 17.073%                                                                                                       Anthony 17.073%                                                                                                       
) (Male Top 5 Height
 72 21.575%                                                                                                       69 20.89%                                                                                                       71 19.521%                                                                                                       70 19.178%                                                                                                       68 18.836%                                                                                                       
) (Male Top 5 KDAverage
 0.0000 91.968%                                                                                                       No Record :( 3.614%                                                                                                       1.0000 2.41%                                                                                                       0.3333 1.205%                                                                                                       12.6761 0.803%                                                                                                       
) (Male Top 5 LastName
 Silva 36.364%                                                                                                       Johnson 22.727%                                                                                                       Santos 18.182%                                                                                                       Miller 13.636%                                                                                                       de Lima 9.091%                                                                                                       
) (Male Top 5 Losses
 2 23.952%                                                                                                       3 21.557%                                                                                                       1 21.557%                                                                                                       4 16.766%                                                                                                       5 16.168%                                                                                                       
) (Male Top 5 NoContests
 0 84.375%                                                                                                       1 14.338%                                                                                                       2 1.287%                                                                                                       
) (Male Top 5 Reach
 74.0 21.681%                                                                                                       71.0 19.912%                                                                                                       70.0 19.912%                                                                                                       72.0 19.469%                                                                                                       73.0 19.027%                                                                                                       
) (Male Top 5 SApM
 No Record :( 37.5%                                                                                                       0.0000 20.833%                                                                                                       2.7333 16.667%                                                                                                       3.1333 12.5%                                                                                                       1.2667 12.5%                                                                                                       
) (Male Top 5 SLpM
 No Record :( 33.333%                                                                                                       0.0000 22.222%                                                                                                       2.7333 14.815%                                                                                                       1.8000 14.815%                                                                                                       1.4000 14.815%                                                                                                       
) (Male Top 5 Stance
 Orthodox 74.449%                                                                                                       Southpaw 18.382%                                                                                                       No Record :( 4.596%                                                                                                       Switch 2.39%                                                                                                       Open Stance 0.184%                                                                                                       
) (Male Top 5 State
 No Record :( 50.952%                                                                                                       California 24.762%                                                                                                       England 9.048%                                                                                                       Texas 7.619%                                                                                                       New York 7.619%                                                                                                       
) (Male Top 5 StrikingAccuracy
 No Record :( 44.0%                                                                                                       50.00 16.0%                                                                                                       0.00 16.0%                                                                                                       42.68 12.0%                                                                                                       40.00 12.0%                                                                                                       
) (Male Top 5 StrikingDefense
 No Record :( 38.462%                                                                                                       66.67 19.231%                                                                                                       33.33 15.385%                                                                                                       100.00 15.385%                                                                                                       71.71 11.538%                                                                                                       
) (Male Top 5 SubmissionsAverage
 0.0000 86.73%                                                                                                       0.5000 4.739%                                                                                                       No Record :( 4.265%                                                                                                       1.0000 2.37%                                                                                                       2.0000 1.896%                                                                                                       
) (Male Top 5 TakedownAccuracy
 No Record :( 31.383%                                                                                                       0.00 24.468%                                                                                                       33.33 16.489%                                                                                                       50.00 14.894%                                                                                                       66.67 12.766%                                                                                                       
) (Male Top 5 TakedownAverage
 0.0000 70.588%                                                                                                       2.0000 9.559%                                                                                                       1.0000 8.824%                                                                                                       No Record :( 6.618%                                                                                                       3.0000 4.412%                                                                                                       
) (Male Top 5 TakedownDefense
 No Record :( 29.814%                                                                                                       100.00 24.845%                                                                                                       0.00 16.149%                                                                                                       66.67 15.528%                                                                                                       33.33 13.665%                                                                                                       
) (Male Top 5 Weight
 155 27.603%                                                                                                       170 25.182%                                                                                                       185 16.465%                                                                                                       145 16.223%                                                                                                       135 14.528%                                                                                                       
) (Male Top 5 Wins
 12 21.622%                                                                                                       8 21.081%                                                                                                       11 20.541%                                                                                                       9 18.919%                                                                                                       14 17.838%                                                                                                       
))xxxxxxxxxxfemale-horizontal-charts((Female Top 5 Age
 31 25.0%                                                                                                       28 25.0%                                                                                                       32 18.75%                                                                                                       26 18.75%                                                                                                       34 12.5%                                                                                                       
) (Female Top 5 AverageFightTime_Seconds
 900 60.0%                                                                                                       299 13.333%                                                                                                       No Record :( 13.333%                                                                                                       820 6.667%                                                                                                       810 6.667%                                                                                                       
) (Female Top 5 City
 Spokane 28.571%                                                                                                       No Record :( 28.571%                                                                                                       Winona 14.286%                                                                                                       Wilmington 14.286%                                                                                                       Whitesburg 14.286%                                                                                                       
) (Female Top 5 Country
 USA 58.621%                                                                                                       Canada 17.241%                                                                                                       Brazil 13.793%                                                                                                       No Record :( 6.897%                                                                                                       Russia 3.448%                                                                                                       
) (Female Top 5 Draws
 0 96.667%                                                                                                       1 3.333%                                                                                                       
) (Female Top 5 FirstName
 Jessica 33.333%                                                                                                       Sarah 22.222%                                                                                                       Alexis 22.222%                                                                                                       Valerie 11.111%                                                                                                       Shayna 11.111%                                                                                                       
) (Female Top 5 Height
 66 37.5%                                                                                                       67 29.167%                                                                                                       65 16.667%                                                                                                       69 12.5%                                                                                                       73 4.167%                                                                                                       
) (Female Top 5 KDAverage
 0.0000 82.143%                                                                                                       No Record :( 7.143%                                                                                                       0.9269 3.571%                                                                                                       0.8621 3.571%                                                                                                       0.8577 3.571%                                                                                                       
) (Female Top 5 LastName
 de Randamie 20.0%                                                                                                       Zingano 20.0%                                                                                                       Tate 20.0%                                                                                                       Smith 20.0%                                                                                                       Rousey 20.0%                                                                                                       
) (Female Top 5 Losses
 3 25.0%                                                                                                       1 25.0%                                                                                                       0 20.833%                                                                                                       2 16.667%                                                                                                       5 12.5%                                                                                                       
) (Female Top 5 NoContests
 0 86.667%                                                                                                       1 13.333%                                                                                                       
) (Female Top 5 Reach
 66.0 43.75%                                                                                                       No Record :( 18.75%                                                                                                       70.0 12.5%                                                                                                       68.5 12.5%                                                                                                       68.0 12.5%                                                                                                       
) (Female Top 5 SApM
 No Record :( 33.333%                                                                                                       8.2000 16.667%                                                                                                       6.6221 16.667%                                                                                                       6.2949 16.667%                                                                                                       5.4162 16.667%                                                                                                       
) (Female Top 5 SLpM
 No Record :( 33.333%                                                                                                       7.0993 16.667%                                                                                                       6.9333 16.667%                                                                                                       6.9195 16.667%                                                                                                       6.6221 16.667%                                                                                                       
) (Female Top 5 Stance
 Orthodox 73.333%                                                                                                       No Record :( 26.667%                                                                                                       
) (Female Top 5 State
 Washington 23.077%                                                                                                       California 23.077%                                                                                                       No Record :( 23.077%                                                                                                       Ontario 15.385%                                                                                                       British Columbia 15.385%                                                                                                       
) (Female Top 5 StrikingAccuracy
 No Record :( 33.333%                                                                                                       83.33 16.667%                                                                                                       80.00 16.667%                                                                                                       63.97 16.667%                                                                                                       57.83 16.667%                                                                                                       
) (Female Top 5 StrikingDefense
 No Record :( 33.333%                                                                                                       75.19 16.667%                                                                                                       69.53 16.667%                                                                                                       69.32 16.667%                                                                                                       66.47 16.667%                                                                                                       
) (Female Top 5 SubmissionsAverage
 0.0000 77.273%                                                                                                       No Record :( 9.091%                                                                                                       5.7284 4.545%                                                                                                       2.0513 4.545%                                                                                                       1.5000 4.545%                                                                                                       
) (Female Top 5 TakedownAccuracy
 No Record :( 28.571%                                                                                                       0.00 23.81%                                                                                                       100.00 19.048%                                                                                                       50.00 14.286%                                                                                                       40.00 14.286%                                                                                                       
) (Female Top 5 TakedownAverage
 0.0000 64.286%                                                                                                       No Record :( 14.286%                                                                                                       8.2744 7.143%                                                                                                       6.3394 7.143%                                                                                                       6.0201 7.143%                                                                                                       
) (Female Top 5 TakedownDefense
 0.00 26.316%                                                                                                       No Record :( 26.316%                                                                                                       60.00 15.789%                                                                                                       50.00 15.789%                                                                                                       100.00 15.789%                                                                                                       
) (Female Top 5 Weight
 135 100.0%                                                                                                       
) (Female Top 5 Wins
 4 26.667%                                                                                                       9 20.0%                                                                                                       8 20.0%                                                                                                       10 20.0%                                                                                                       7 13.333%                                                                                                       
))xxxxxxxxxx