# Data Science Tutorial for Beginners ```edn no-exec id=ffcf0396-b3f9-40e6-a0c2-654401879781 {:deps {org.clojure/clojure {:mvn/version "1.10.0"} org.clojure/data.csv {:mvn/version "0.1.4"} generateme/fastmath {:mvn/version "1.3.0-SNAPSHOT"} huri {:mvn/version "0.10.0-SNAPSHOT"} org.clojure/math.combinatorics {:mvn/version "0.1.4"} org.clojure/tools.deps.alpha {:git/url "https://github.com/clojure/tools.deps.alpha.git" :sha "f6c080bd0049211021ea59e516d1785b08302515"}}} ``` [combats.csv][nextjournal#file#a9665ffd-eb30-44a8-bd86-b47db1be0d06] [pokemon.csv][nextjournal#file#ba551220-a4f9-458c-a1b6-22dba58b17e2] [tests.csv][nextjournal#file#64847d9e-32ba-469c-b879-bd2a63016743] ```clojure id=2ba20c09-3e81-4547-81bd-83cba9fd25e7 (use 'clojure.tools.deps.alpha.repl) (clojure-version) ``` ```bash id=980b9f43-aa08-407a-bbea-8fb0620828d4 ls | grep csv ``` ```clojure id=44fafaeb-bd13-4e50-841b-5592b72e8b90 (slurp "combats.csv") ``` [result][nextjournal#output#44fafaeb-bd13-4e50-841b-5592b72e8b90#result] ```clojure id=eaefba21-b853-41c0-b149-420190715be7 (require '[clojure.data.csv :as csv] '[clojure.java.io :as io] '[fastmath.stats :as stats]) ``` ```clojure id=0c6cbc94-65f3-445a-9f1f-8f02ff915971 (defn csv-reader [filename] (with-open [reader (io/reader filename)] (doall (csv/read-csv reader)))) (defn strip [coll chars] (apply str (remove #((set chars) %) coll))) (defn data->maps [data] (doall (map zipmap (->> (first data) (map #(strip % " .,")) (map keyword) repeat) (rest data)))) (defn csv->maps [filename] (data->maps (csv-reader filename))) ``` ```clojure id=17e20cc6-1969-475a-b02c-5b7c40d015bd (def pokemon (csv->maps "pokemon.csv")) ``` ```clojure id=d25671b2-25da-4bd8-8cd1-d86bfda59da0 (first pokemon) ``` ```clojure id=1840d75b-f523-4459-9afb-f0bec3fe1af0 (def pokemon (let [nums (map #(select-keys % [:SpDef :Attack :Speed :SpAtk :# :Defense :Generation :HP]) pokemon) upvals (fn [m] (reduce-kv (fn [m k v] (assoc m k (Integer/parseInt v))) {} m)) ->nums (map upvals nums)] (map #(merge %1 %2) pokemon ->nums))) ``` ```clojure id=aee93859-595a-4a22-9bde-59543ce19fb3 (first pokemon) ``` ```clojure id=9edf65a3-0648-45c3-95f9-0d8364e44ce8 (defn nilify [v] (if (string? v) (when-not (clojure.string/blank? v) v) v)) ``` ```clojure id=b823dff2-c730-4508-98b4-6bde9e4df10f (defn upvals [m f] (reduce-kv (fn [m k v] (assoc m k (f v))) {} m)) (def pokemon (map (fn [m] (upvals m nilify)) pokemon)) ``` ```clojure id=bcfaa153-7602-4231-8c95-a4cf2be60459 (require '[huri.core :as h]) ``` ```clojure id=6447dce7-727a-4ace-a56a-766c4c88466e (h/size pokemon) ``` ```clojure id=fc4efb50-9929-4ff2-a263-98224cacfe2d (h/cols pokemon) ``` ```clojure id=75c6d7cf-1247-4c90-8fad-2d77e93ca4c6 (defn nilcounter [df] (let [c (h/cols df) dists (map #(h/distribution % df) c) nils (map #(% nil) dists)] (zipmap c nils))) ``` ```clojure id=866b7d9f-2342-4a90-af54-71879bd72b4a (clojure.pprint/print-table [(nilcounter pokemon)]) ``` ```clojure id=5f104232-9a58-4b11-9ef8-3a3aecc7ff2d (require '[clojure.math.combinatorics :as combinatorics]) ``` ```clojure id=08fffa5d-8c75-4a3a-88b3-60687efa18f8 (defn cross-corr [df numcols] (let [pairs (combinatorics/cartesian-product numcols numcols)] (for [p pairs] (if (apply = p) {:keys (vec p) :corr 1} {:keys (vec p) :corr (->> df (map #(select-keys % p)) h/col-oriented vals (apply stats/correlation))})))) ``` ```clojure id=b7ee4c0f-8df2-400c-8511-bf0dfb3d3158 (defn heatmap [x y z] {:data [{:x x :y y :z z :type "heatmap" :colorscale [[0 "#24ff24"] [1 "#004b00"]]}] :layout {:autosize false :width 600 :height 600}}) ``` ```clojure id=b6f5d41b-5463-4c60-8d73-b20b014015f9 (def numcols [:SpDef :Attack :Speed :SpAtk :# :Defense :Generation :HP]) ``` ```clojure id=1850b98c-de23-42e9-b928-e4e6e40c4671 (heatmap numcols numcols (->> (cross-corr pokemon numcols) h/col-oriented :corr (partition 8))) ``` [result][nextjournal#output#1850b98c-de23-42e9-b928-e4e6e40c4671#result] ```clojurescript id=51db0ac1-a9e3-4c14-b1b2-dd7452046275 (.plot js/Nextjournal [reference][nextjournal#reference#17a74a33-e1a6-425c-8206-c84f29431fde]) ``` ```clojure id=761ea4e7-3ca8-4546-b60c-9d19b1c444b6 {:data [{:x (map :# pokemon) :y (map :Speed pokemon) :type "scatter" :name "Speed" :opacity 0.6} {:x (map :# pokemon) :y (map :Defense pokemon) :type "scatter" :name "Defense" :opacity 0.6}] :layout {:autosize false :width 600 :height 600}} ``` [result][nextjournal#output#761ea4e7-3ca8-4546-b60c-9d19b1c444b6#result] ```clojurescript id=4d8578cf-8b7c-4558-af2f-47fb3bd3935f (.plot js/Nextjournal [reference][nextjournal#reference#d530e539-3ef9-4c8a-9bd7-19cf29a23a37]) ``` ```clojure id=2a11cf06-09b0-45bc-9daa-938ace97fd55 (defn scatter [df kx ky] {:data [{:x (map kx df) :y (map ky df) :mode "markers" :type "scatter"}] :layout {:autosize false :width 600 :height 600}}) ``` ```clojure id=217fce2c-26d6-4a85-bf78-7bef4e2bbbae (scatter pokemon :Attack :Defense) ``` [result][nextjournal#output#217fce2c-26d6-4a85-bf78-7bef4e2bbbae#result] ```clojurescript id=b3f37211-6d18-4b96-8d95-785df92c5c5a (.plot js/Nextjournal [reference][nextjournal#reference#0936ee7c-55b2-4254-8f0a-2037ce9665c5]) ``` ```clojure id=cd26b26c-fd4c-4e23-a07a-b5ae64646644 (defn hist [df kx] {:data [{:x (map kx df) :type "histogram"}] :layout {:autosize false :width 600 :height 600}}) ``` ```clojure id=43a7d7dc-3954-4287-828a-9f20ddccddac (hist pokemon :Speed) ``` [result][nextjournal#output#43a7d7dc-3954-4287-828a-9f20ddccddac#result] ```clojurescript id=58f38c75-8dd1-4146-9933-b3678eb22ec2 (.plot js/Nextjournal [reference][nextjournal#reference#e78dfba8-7bf6-44a0-a6f8-a33784d6fadb]) ``` ```clojure id=49ed32ef-0210-449f-bb1d-f891441db780 (h/rollup :Type1 count pokemon) ``` ```clojure id=20297954-bd12-4bde-a9bf-b7da366f11d4 (let [df (h/rollup :Legendary identity :Attack pokemon)] {:data [{:y (df "False") :type "box" :name "False"} {:y (df "True") :type "box" :name "True"}] :layout {:autosize false :width 600 :height 600}}) ``` [result][nextjournal#output#20297954-bd12-4bde-a9bf-b7da366f11d4#result] ```clojurescript id=5404eb0d-05c7-468a-bc4b-9de83f5aafe5 (.plot js/Nextjournal [reference][nextjournal#reference#dd006a01-44f9-46ad-84b9-963b68a3f88b]) ``` ```clojure id=8a6a101c-b3ef-4c75-a191-c50ad46c6a31 (map type (vals (first pokemon))) ``` ```clojure id=f8783c5a-2584-4190-a715-8702f703f833 (group-by :Name (map #(select-keys % [:Name :Attack :Defense]) pokemon)) ``` ```clojure id=28dc14bb-e097-4ad1-aa6a-963722e987c5 (def pokemon-clean (filter #(not (nil? (:Type2 %))) pokemon)) ``` ```clojure id=149bae2e-6f6d-40b5-95d9-6814f704f9ed (h/distribution :Type2 pokemon-clean) ``` ```clojure id=dfdcf368-5b26-465d-b467-5a2980a3f1f7 (defn fill-nil [row k sub] (if (nil? (k row)) (assoc row k sub) row)) ``` ```clojure id=fd8cb242-e495-49e0-a32b-cd780d9829db (def pokemon (map #(fill-nil % :Type2 "empty") pokemon)) ``` ```clojure id=1c55cd83-06b3-4b1a-9eb3-4e241897ffa3 (let [n (map :# pokemon)] {:data [{:y (map :Attack pokemon) :x n :type "scatter" :name "Attack"} {:y (map :Defense pokemon) :x n :type "scatter" :name "Defense" :xaxis "x2" :yaxis "y2"} {:y (map :Speed pokemon) :x n :type "scatter" :name "Speed" :xaxis "x3" :yaxis "y3"}] :layout {:autosize false :width 600 :height 600 :grid {:rows 3 :columns 1 :pattern "independent" :roworder "bottom to top"}}}) ``` [result][nextjournal#output#1c55cd83-06b3-4b1a-9eb3-4e241897ffa3#result] ```clojurescript id=e60e3b37-567c-4fed-8606-6f322de20b26 (.plot js/Nextjournal [reference][nextjournal#reference#d59945e1-5d33-4383-8e64-a9f2c3eb2496]) ``` ```clojure id=fc2a5b17-fd13-4595-8e90-d31ab4ef5415 (assoc-in (hist pokemon :Speed) [:data 0 :cumulative] {:enabled true}) ``` [result][nextjournal#output#fc2a5b17-fd13-4595-8e90-d31ab4ef5415#result] ```clojurescript id=2cf8e7fd-a4ac-4ce7-882f-4786caa84c88 (.plot js/Nextjournal [reference][nextjournal#reference#939c6938-d31d-4f99-9653-3810a0ede8f9]) ``` ```clojure id=997a2030-0c2c-4a6b-9ca5-3545f3c6df83 (->> pokemon first :HP) ``` ```clojure id=806ac125-7423-4f47-a1be-d939c61d306b ``` [nextjournal#file#a9665ffd-eb30-44a8-bd86-b47db1be0d06]: [nextjournal#file#ba551220-a4f9-458c-a1b6-22dba58b17e2]: [nextjournal#file#64847d9e-32ba-469c-b879-bd2a63016743]: [nextjournal#output#44fafaeb-bd13-4e50-841b-5592b72e8b90#result]: [nextjournal#output#1850b98c-de23-42e9-b928-e4e6e40c4671#result]: [nextjournal#reference#17a74a33-e1a6-425c-8206-c84f29431fde]: <#nextjournal#reference#17a74a33-e1a6-425c-8206-c84f29431fde> [nextjournal#output#761ea4e7-3ca8-4546-b60c-9d19b1c444b6#result]: [nextjournal#reference#d530e539-3ef9-4c8a-9bd7-19cf29a23a37]: <#nextjournal#reference#d530e539-3ef9-4c8a-9bd7-19cf29a23a37> [nextjournal#output#217fce2c-26d6-4a85-bf78-7bef4e2bbbae#result]: [nextjournal#reference#0936ee7c-55b2-4254-8f0a-2037ce9665c5]: <#nextjournal#reference#0936ee7c-55b2-4254-8f0a-2037ce9665c5> [nextjournal#output#43a7d7dc-3954-4287-828a-9f20ddccddac#result]: [nextjournal#reference#e78dfba8-7bf6-44a0-a6f8-a33784d6fadb]: <#nextjournal#reference#e78dfba8-7bf6-44a0-a6f8-a33784d6fadb> [nextjournal#output#20297954-bd12-4bde-a9bf-b7da366f11d4#result]: [nextjournal#reference#dd006a01-44f9-46ad-84b9-963b68a3f88b]: <#nextjournal#reference#dd006a01-44f9-46ad-84b9-963b68a3f88b> [nextjournal#output#1c55cd83-06b3-4b1a-9eb3-4e241897ffa3#result]: [nextjournal#reference#d59945e1-5d33-4383-8e64-a9f2c3eb2496]: <#nextjournal#reference#d59945e1-5d33-4383-8e64-a9f2c3eb2496> [nextjournal#output#fc2a5b17-fd13-4595-8e90-d31ab4ef5415#result]: [nextjournal#reference#939c6938-d31d-4f99-9653-3810a0ede8f9]: <#nextjournal#reference#939c6938-d31d-4f99-9653-3810a0ede8f9>
This notebook was exported from https://nextjournal.com/a/KqDYaSXME1XZt4CQtEP8f?change-id=CddGUdNyQXzctV4UDTVMCU ```edn nextjournal-metadata {:article {:settings nil, :nodes {"00b1ade8-ceb7-4dad-9438-63e338f3bd3f" {:environment [:environment nil], :id "00b1ade8-ceb7-4dad-9438-63e338f3bd3f", :kind "runtime", :language "clojurescript", :type :nextjournal}, "08fffa5d-8c75-4a3a-88b3-60687efa18f8" {:compute-ref #uuid "2d80d55c-e014-4927-bae6-64a2820646ee", :exec-duration 183, :id "08fffa5d-8c75-4a3a-88b3-60687efa18f8", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "0936ee7c-55b2-4254-8f0a-2037ce9665c5" {:id "0936ee7c-55b2-4254-8f0a-2037ce9665c5", :kind "reference", :link [:output "217fce2c-26d6-4a85-bf78-7bef4e2bbbae" nil]}, "0c6cbc94-65f3-445a-9f1f-8f02ff915971" {:compute-ref #uuid "c4f4f32b-b9d6-4c2a-a4ee-e770bd137559", :exec-duration 294, :id "0c6cbc94-65f3-445a-9f1f-8f02ff915971", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "149bae2e-6f6d-40b5-95d9-6814f704f9ed" {:compute-ref #uuid "21d69c37-7c15-44f4-ae5e-9e44175d4f09", :exec-duration 173, :id "149bae2e-6f6d-40b5-95d9-6814f704f9ed", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "17a74a33-e1a6-425c-8206-c84f29431fde" {:id "17a74a33-e1a6-425c-8206-c84f29431fde", :kind "reference", :link [:output "1850b98c-de23-42e9-b928-e4e6e40c4671" nil]}, "17e20cc6-1969-475a-b02c-5b7c40d015bd" {:compute-ref #uuid "65929381-e89d-43fb-91f2-2a94d263d1ee", :exec-duration 403, :id "17e20cc6-1969-475a-b02c-5b7c40d015bd", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "1840d75b-f523-4459-9afb-f0bec3fe1af0" {:compute-ref #uuid "75e7eacc-f441-4edf-b6d6-cfbea10106a9", :exec-duration 128, :id "1840d75b-f523-4459-9afb-f0bec3fe1af0", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "1850b98c-de23-42e9-b928-e4e6e40c4671" {:compute-ref #uuid "3907b4ea-92e4-4138-8981-fc00164366ac", :exec-duration 631, :id "1850b98c-de23-42e9-b928-e4e6e40c4671", :kind "code", :name "plotly", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "1c55cd83-06b3-4b1a-9eb3-4e241897ffa3" {:compute-ref #uuid "439d76c1-adb7-4681-b35a-f4d32553a6f5", :exec-duration 163, :id "1c55cd83-06b3-4b1a-9eb3-4e241897ffa3", :kind "code", :name "multiline", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "20297954-bd12-4bde-a9bf-b7da366f11d4" {:compute-ref #uuid "bb74fc29-b020-4b3d-85e3-fa6cebf7a7dd", :exec-duration 930, :id "20297954-bd12-4bde-a9bf-b7da366f11d4", :kind "code", :name "box", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "217fce2c-26d6-4a85-bf78-7bef4e2bbbae" {:compute-ref #uuid "cd1bc6c1-2887-44f9-9558-86ad262cb4e1", :exec-duration 743, :id "217fce2c-26d6-4a85-bf78-7bef4e2bbbae", :kind "code", :name "attkdfs", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "28dc14bb-e097-4ad1-aa6a-963722e987c5" {:compute-ref #uuid "990b6886-97bb-4127-a67d-cedf32d900c0", :exec-duration 74, :id "28dc14bb-e097-4ad1-aa6a-963722e987c5", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "2a11cf06-09b0-45bc-9daa-938ace97fd55" {:compute-ref #uuid "2a3c1fda-68fc-44c9-953a-afb33c6d719f", :exec-duration 114, :id "2a11cf06-09b0-45bc-9daa-938ace97fd55", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "2ba20c09-3e81-4547-81bd-83cba9fd25e7" {:compute-ref #uuid "025bafc7-88f2-4a91-b876-f6ad5c1c933e", :exec-duration 5399, :id "2ba20c09-3e81-4547-81bd-83cba9fd25e7", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "2cf8e7fd-a4ac-4ce7-882f-4786caa84c88" {:id "2cf8e7fd-a4ac-4ce7-882f-4786caa84c88", :kind "code", :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "43a7d7dc-3954-4287-828a-9f20ddccddac" {:compute-ref #uuid "36a2d29c-831b-46be-b3ea-82cf459d233c", :exec-duration 776, :id "43a7d7dc-3954-4287-828a-9f20ddccddac", :kind "code", :name "histspeed", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "44fafaeb-bd13-4e50-841b-5592b72e8b90" {:compute-ref #uuid "51506313-f99a-4ab4-aaa7-7d3d98fda8ff", :exec-duration 585, :id "44fafaeb-bd13-4e50-841b-5592b72e8b90", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "49ed32ef-0210-449f-bb1d-f891441db780" {:compute-ref #uuid "152b5a30-3602-4390-8d96-b2686c9fbf9d", :exec-duration 76, :id "49ed32ef-0210-449f-bb1d-f891441db780", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "4d8578cf-8b7c-4558-af2f-47fb3bd3935f" {:id "4d8578cf-8b7c-4558-af2f-47fb3bd3935f", :kind "code", :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "51db0ac1-a9e3-4c14-b1b2-dd7452046275" {:compute-ref #uuid "72bd3c74-657a-4a40-be07-d121c46f0a5e", :exec-duration 25, :id "51db0ac1-a9e3-4c14-b1b2-dd7452046275", :kind "code", :output-log-lines {}, :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "5404eb0d-05c7-468a-bc4b-9de83f5aafe5" {:id "5404eb0d-05c7-468a-bc4b-9de83f5aafe5", :kind "code", :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "58f38c75-8dd1-4146-9933-b3678eb22ec2" {:id "58f38c75-8dd1-4146-9933-b3678eb22ec2", :kind "code", :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "5f104232-9a58-4b11-9ef8-3a3aecc7ff2d" {:compute-ref #uuid "823905f9-ec7d-4d00-a559-151b42978af2", :exec-duration 926, :id "5f104232-9a58-4b11-9ef8-3a3aecc7ff2d", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "6447dce7-727a-4ace-a56a-766c4c88466e" {:compute-ref #uuid "3633b0e5-0ac2-46ea-8657-e1a729e836f0", :exec-duration 244, :id "6447dce7-727a-4ace-a56a-766c4c88466e", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "64847d9e-32ba-469c-b879-bd2a63016743" {:id "64847d9e-32ba-469c-b879-bd2a63016743", :kind "file"}, "75c6d7cf-1247-4c90-8fad-2d77e93ca4c6" {:compute-ref #uuid "bb51db5b-e11d-4766-950e-beecba1452b5", :exec-duration 111, :id "75c6d7cf-1247-4c90-8fad-2d77e93ca4c6", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "761ea4e7-3ca8-4546-b60c-9d19b1c444b6" {:compute-ref #uuid "c5f8e42c-b21b-4f4e-a13b-0bf1fb46c2e2", :exec-duration 869, :id "761ea4e7-3ca8-4546-b60c-9d19b1c444b6", :kind "code", :name "speed-defense", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "80403b0a-1226-48ff-9bcc-624ed02e3635" {:environment [:environment {:article/nextjournal.id #uuid "5b45eb52-bad4-413d-9d7f-b2b573a25322", :change/nextjournal.id #uuid "5c4f549a-3166-4fe2-ad03-40c05bb08a13", :node/id "0ae15688-6f6a-40e2-a4fa-52d81371f733"}], :id "80403b0a-1226-48ff-9bcc-624ed02e3635", :kind "runtime", :language "clojure", :name "Kaggle Pokemon", :resources {:machine-type "n1-standard-1"}, :type :nextjournal, :runtime/mounts [{:src [:node "ffcf0396-b3f9-40e6-a0c2-654401879781"], :dest "/deps.edn"} {:src [:node "64847d9e-32ba-469c-b879-bd2a63016743"], :dest "/tests.csv"} {:src [:node "a9665ffd-eb30-44a8-bd86-b47db1be0d06"], :dest "/combats.csv"} {:src [:node "ba551220-a4f9-458c-a1b6-22dba58b17e2"], :dest "/pokemon.csv"}]}, "806ac125-7423-4f47-a1be-d939c61d306b" {:id "806ac125-7423-4f47-a1be-d939c61d306b", :kind "code", :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "866b7d9f-2342-4a90-af54-71879bd72b4a" {:compute-ref #uuid "eeba049b-eb9f-4ffa-a183-6b399e7eebff", :exec-duration 2179, :id "866b7d9f-2342-4a90-af54-71879bd72b4a", :kind "code", :output-log-lines {:stdout 4}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "8a6a101c-b3ef-4c75-a191-c50ad46c6a31" {:compute-ref #uuid "bf82f77a-29af-4072-83d4-f2e4b6c41cad", :exec-duration 61, :id "8a6a101c-b3ef-4c75-a191-c50ad46c6a31", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "939c6938-d31d-4f99-9653-3810a0ede8f9" {:id "939c6938-d31d-4f99-9653-3810a0ede8f9", :kind "reference", :link [:output "fc2a5b17-fd13-4595-8e90-d31ab4ef5415" nil]}, "980b9f43-aa08-407a-bbea-8fb0620828d4" {:compute-ref #uuid "4dea092b-8af3-4b42-b385-fe0e5986e599", :exec-duration 1123, :id "980b9f43-aa08-407a-bbea-8fb0620828d4", :kind "code", :output-log-lines {:stdout 3}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "997a2030-0c2c-4a6b-9ca5-3545f3c6df83" {:compute-ref #uuid "3f063d4d-2e36-4833-ac54-2996aa9d7f48", :exec-duration 42, :id "997a2030-0c2c-4a6b-9ca5-3545f3c6df83", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "9edf65a3-0648-45c3-95f9-0d8364e44ce8" {:compute-ref #uuid "47a6b8ef-7f68-4c88-b3d5-35a37523edbf", :exec-duration 62, :id "9edf65a3-0648-45c3-95f9-0d8364e44ce8", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "a9665ffd-eb30-44a8-bd86-b47db1be0d06" {:id "a9665ffd-eb30-44a8-bd86-b47db1be0d06", :kind "file"}, "aee93859-595a-4a22-9bde-59543ce19fb3" {:compute-ref #uuid "9e47728d-c8a2-44ae-938a-35fad0b20e8f", :exec-duration 137, :id "aee93859-595a-4a22-9bde-59543ce19fb3", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "b3f37211-6d18-4b96-8d95-785df92c5c5a" {:id "b3f37211-6d18-4b96-8d95-785df92c5c5a", :kind "code", :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "b6f5d41b-5463-4c60-8d73-b20b014015f9" {:compute-ref #uuid "1fe2e9f7-c6ef-451f-87c7-b1e4d7626704", :exec-duration 73, :id "b6f5d41b-5463-4c60-8d73-b20b014015f9", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "b7ee4c0f-8df2-400c-8511-bf0dfb3d3158" {:compute-ref #uuid "ad9b3b1e-f15f-4a82-a008-4d6138027d8f", :exec-duration 51, :id "b7ee4c0f-8df2-400c-8511-bf0dfb3d3158", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "b823dff2-c730-4508-98b4-6bde9e4df10f" {:compute-ref #uuid "526b3eea-239b-4e69-8412-f2276051b1ec", :exec-duration 104, :id "b823dff2-c730-4508-98b4-6bde9e4df10f", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "ba551220-a4f9-458c-a1b6-22dba58b17e2" {:id "ba551220-a4f9-458c-a1b6-22dba58b17e2", :kind "file"}, "bcfaa153-7602-4231-8c95-a4cf2be60459" {:compute-ref #uuid "725764d1-9bde-4f2c-af63-b9ddcbb30fec", :exec-duration 7723, :id "bcfaa153-7602-4231-8c95-a4cf2be60459", :kind "code", :output-log-lines {:stdout 1}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "cd26b26c-fd4c-4e23-a07a-b5ae64646644" {:compute-ref #uuid "96ea9d9e-9958-4a2f-b9a7-52f5ee36bec6", :exec-duration 63, :id "cd26b26c-fd4c-4e23-a07a-b5ae64646644", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "d25671b2-25da-4bd8-8cd1-d86bfda59da0" {:compute-ref #uuid "e7d74382-1307-40c4-bf9e-c5e5d98e38c1", :exec-duration 81, :id "d25671b2-25da-4bd8-8cd1-d86bfda59da0", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "d530e539-3ef9-4c8a-9bd7-19cf29a23a37" {:id "d530e539-3ef9-4c8a-9bd7-19cf29a23a37", :kind "reference", :link [:output "761ea4e7-3ca8-4546-b60c-9d19b1c444b6" nil]}, "d59945e1-5d33-4383-8e64-a9f2c3eb2496" {:id "d59945e1-5d33-4383-8e64-a9f2c3eb2496", :kind "reference", :link [:output "1c55cd83-06b3-4b1a-9eb3-4e241897ffa3" nil]}, "dd006a01-44f9-46ad-84b9-963b68a3f88b" {:id "dd006a01-44f9-46ad-84b9-963b68a3f88b", :kind "reference", :link [:output "20297954-bd12-4bde-a9bf-b7da366f11d4" nil]}, "dfdcf368-5b26-465d-b467-5a2980a3f1f7" {:compute-ref #uuid "1f3a454b-6134-46d9-8568-b60aff82d811", :exec-duration 54, :id "dfdcf368-5b26-465d-b467-5a2980a3f1f7", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "e60e3b37-567c-4fed-8606-6f322de20b26" {:id "e60e3b37-567c-4fed-8606-6f322de20b26", :kind "code", :runtime [:runtime "00b1ade8-ceb7-4dad-9438-63e338f3bd3f"]}, "e78dfba8-7bf6-44a0-a6f8-a33784d6fadb" {:id "e78dfba8-7bf6-44a0-a6f8-a33784d6fadb", :kind "reference", :link [:output "43a7d7dc-3954-4287-828a-9f20ddccddac" nil]}, "eaefba21-b853-41c0-b149-420190715be7" {:compute-ref #uuid "c73a3ccc-d3dd-4b7a-b943-f4a946a4ab44", :exec-duration 12024, :id "eaefba21-b853-41c0-b149-420190715be7", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "f8783c5a-2584-4190-a715-8702f703f833" {:compute-ref #uuid "53a34190-d46a-4f8d-bb13-4f6ee7cda99d", :exec-duration 53, :id "f8783c5a-2584-4190-a715-8702f703f833", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "fc2a5b17-fd13-4595-8e90-d31ab4ef5415" {:compute-ref #uuid "6913eaf2-0927-4aca-ad9b-50f0686a412a", :exec-duration 2352, :id "fc2a5b17-fd13-4595-8e90-d31ab4ef5415", :kind "code", :name "histcum", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "fc4efb50-9929-4ff2-a263-98224cacfe2d" {:compute-ref #uuid "5edb7b06-2fc1-43d7-ac6b-c390c06d03c3", :exec-duration 75, :id "fc4efb50-9929-4ff2-a263-98224cacfe2d", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "fd8cb242-e495-49e0-a32b-cd780d9829db" {:compute-ref #uuid "f4b2b2d8-d5d1-426a-8f9b-60578509f823", :exec-duration 56, :id "fd8cb242-e495-49e0-a32b-cd780d9829db", :kind "code", :output-log-lines {}, :runtime [:runtime "80403b0a-1226-48ff-9bcc-624ed02e3635"]}, "ffcf0396-b3f9-40e6-a0c2-654401879781" {:id "ffcf0396-b3f9-40e6-a0c2-654401879781", :kind "code-listing", :name "deps.edn"}}, :nextjournal/id #uuid "02a11a29-cbea-4129-a028-27c39ca5a1ac", :article/change {:nextjournal/id #uuid "5e31a6b5-b312-4b2a-9cad-ea99629b8329"}}} ```