changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate examples/vegadat.lisp

changeset 38: 8259376eee11
parent: c6d0a37a046a
child: 1ef551e24009
author: ellis <ellis@rwest.io>
date: Fri, 29 Dec 2023 00:45:44 -0500
permissions: -rw-r--r--
description: examples
37
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;; from https://github.com/Lisp-Stat/plot/blob/master/src/vega/vega-datasets.lisp
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
2
 (defpackage :examples/vegadat
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
3
   (:use :cl :std :net/fetch :dat)
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
4
   (:export 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
5
    :*vega-datasets* :*vega-dataset-base-url*
38
8259376eee11 examples
ellis <ellis@rwest.io>
parents: 37
diff changeset
6
    :fetch-vega-datasets :purge-vega-datasets))
37
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
8
 (in-package :examples/vegadat)
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
9
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
10
 (defparameter *vega-dataset-base-url* "http://raw.githubusercontent.com/vega/vega-datasets/main/data/"
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
11
   "Base URL for datasets included in Vega")
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
12
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
13
 (defparameter *vega-dataset-stash* "vega/")
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
14
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
15
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
16
 ;; (gethash :airpots *vega-datasets*)
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
17
 (defvar *vega-datasets* (make-hash-table :size 66 :test #'equal)
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
18
   "All Vega example data sets. k=symbol,v=url")
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
19
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
20
 (defun push-dataset (key)
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
21
   "Push a dataset to *VEGA-DATASETS* by filename."
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
22
   (let ((val (concatenate 'string *vega-dataset-base-url* key)))
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
23
     (setf (gethash key *vega-datasets*) val)))
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
24
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
25
 ;; 66 files total, mostly json and csv. 1 tsv file, 1 arrow file.
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
26
 (mapc #'push-dataset
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
27
       '("airports.csv" "annual-precip.json" "anscombe.json" "barley.json" "budget.json" "budgets.json" "burtin.json" "cars.json" "countries.json" "crimea.json" "driving.json" "earthquakes.json" "flare-dependencies.json" "flare.json" "flights-10k.json" "flights-200k.json" "flights-20k.json" "flights-2k.json" "flights-5k.json" "football.json" "gapminder.json" "income.json" "jobs.json" "londonBoroughs.json" "londonCentroids.json" "londonTubeLines.json" "miserables.json" "monarchs.json" "movies.json" "normal-2d.json" "obesity.json" "ohlc.json" "penguins.json" "points.json" "political-contributions.json" "population.json" "udistrict.json" "unemployment-across-industries.json" "uniform-2d.json" "us-10m.json" "us-state-capitals.json" "volcano.json" "weather.json" "wheat.json" "world-110m.json" "airports.csv" "birdstrikes.csv" "co2-concentration.csv" "disasters.csv" "flights-3m.csv" "flights-airport.csv" "gapminder-health-income.csv" "github.csv" "iowa-electricity.csv" "la-riots.csv" "lookup_groups.csv" "lookup_people.csv" "population_engineers_hurricanes.csv" "seattle-weather-hourly-normals.csv" "seattle-weather.csv" "sp500-2000.csv" "sp500.csv" "stocks.csv" "us-employment.csv" "weather.csv" "windvectors.csv" "zipcodes.csv" "unemployment.tsv" "flights-200k.arrow"))
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
28
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
29
 (defun fetch-vega-datasets ()
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
30
   (ensure-directories-exist *vega-dataset-stash*)
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
31
   (maphash-keys
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
32
    (lambda (x) (download (gethash x *vega-datasets*) 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
33
                          (merge-pathnames x *vega-dataset-stash*)))
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
34
    *vega-datasets*))
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
35
 
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
36
 (defun purge-vega-datasets ()
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
37
   (std:when-let ((stash (probe-file *vega-dataset-stash*)))
c6d0a37a046a mini-redis and vegadat
ellis <ellis@rwest.io>
parents:
diff changeset
38
     (sb-ext:delete-directory stash :recursive t)))