(ns ingest-ml (:require [datomic.client.api :as dc] [clojure.java.io :as io] [clojure.data.csv :as csv] [iol-ion.tx :refer [upsert-entity]] [auto-ap.datomic :refer [conn]])) (println "hi") (defn boot [] (user/init-repl) (user/start-db)) (defn reset-inference [] (doseq [p (->> (dc/q '[:find ?t :where [?t :transaction/recommended-account]] (dc/db conn)) (map (fn [[t]] `(upsert-entity ~{:db/id t :transaction/recommended-account nil :tranasction/vendor-confidence nil :transaction/account-confidence nil :transaction/recommended-vendor nil}))) (partition-all 100))] (dc/transact conn {:tx-data p}))) (defn read-inference [] (with-open [reader (io/reader "/mnt/data/dev2/ml-test/inference-outcome.csv")] (->> (csv/read-csv reader) (into [] (comp (drop 1) (map (fn [[_ transaction best-vendor best-account account-confidence]] {:db/id (Long/parseLong transaction) :transaction/recommended-account (Long/parseLong best-account) :transaction/account-confidence (Double/parseDouble account-confidence) :transaction/recommended-vendor (Long/parseLong best-vendor)} ))))))) (defn apply-inference [inference] (doseq [p (->> inference (partition-all 100))] (dc/transact conn {:tx-data p}))) (defn check-applied-inference [] (clojure.pprint/pprint (->> (dc/q '[:find ?code ?bac ?do ?amount ?vc ?rvn ?ac ?ran :in $ :where [?t :transaction/recommended-account ?ra] [?ra :account/name ?ran] [?t :transaction/account-confidence ?ac] [?t :transaction/recommended-vendor ?rv] [?rv :vendor/name ?rvn] [?t :transaction/description-original ?do] [?t :transaction/client ?c] [?c :client/code ?code] [?t :transaction/bank-account ?ba] [?ba :bank-account/code ?bac] [?t :transaction/amount ?amount] ] (dc/db conn)) (shuffle) (take 10))))