Mercurial > hg > confint
comparison db/access_db.R @ 0:205974c9568c tip
Initial commit. Predictions not included for lack of space.
author | franrodalg <f.rodriguezalgarra@qmul.ac.uk> |
---|---|
date | Sat, 29 Jun 2019 18:45:50 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:205974c9568c |
---|---|
1 library(tidyverse) | |
2 library(RSQLite) | |
3 | |
4 | |
5 # | |
6 get_excerpts <- function(db = "../db/gtzan.db"){ | |
7 | |
8 con <- dbConnect(SQLite(), db) | |
9 | |
10 res <- dbGetQuery( | |
11 con, "SELECT ex_id FROM excerpts") | |
12 | |
13 dbDisconnect(con) | |
14 | |
15 return(res) | |
16 | |
17 } | |
18 | |
19 # | |
20 get_excerpts_artists <- function(db = "../db/gtzan.db"){ | |
21 | |
22 con <- dbConnect(RSQLite::SQLite(), db) | |
23 | |
24 res <- dbGetQuery( | |
25 con, | |
26 "SELECT ex_id, artist_id FROM | |
27 recordings_artists AS r INNER JOIN excerpts AS e | |
28 ON r.rec_id = e.rec_id;") | |
29 | |
30 dbDisconnect(con) | |
31 | |
32 return(res) | |
33 | |
34 } | |
35 | |
36 .filter_by_class <- function(df, | |
37 db = "../db/gtzan.db", classes = NULL){ | |
38 | |
39 class_ids <- get_class_names(db = db) %>% | |
40 filter(class %in% classes) %>% | |
41 select(class_id) %>% | |
42 unlist() | |
43 df %>% filter(class_id %in% class_ids) | |
44 | |
45 } | |
46 | |
47 # | |
48 get_excerpts_classes <- function(db = "../db/gtzan.db", | |
49 classes = NULL){ | |
50 | |
51 con <- dbConnect(SQLite(), db) | |
52 | |
53 res <- dbGetQuery( | |
54 con, | |
55 "SELECT ex_id, class_id, ex_id_class FROM | |
56 excerpts_classes;") | |
57 | |
58 if (!is.null(classes)) | |
59 res <- .filter_by_class(res, db, classes) | |
60 | |
61 dbDisconnect(con) | |
62 | |
63 return(res) | |
64 | |
65 } | |
66 | |
67 # | |
68 get_class_names <- function(db = "../db/gtzan.db"){ | |
69 | |
70 con <- dbConnect(SQLite(), db) | |
71 | |
72 res <- dbGetQuery( | |
73 con, | |
74 "SELECT class_id, class FROM | |
75 classes;") | |
76 | |
77 dbDisconnect(con) | |
78 | |
79 return(res) | |
80 | |
81 } | |
82 | |
83 # | |
84 get_artists <- function(excerpts, unique_artists = T, | |
85 db = "../db/gtzan.db"){ | |
86 | |
87 excerpts_artists <- get_excerpts_artists(db = db) | |
88 | |
89 res <- | |
90 excerpts_artists %>% | |
91 inner_join(data.frame(ex_id = excerpts), by = c('ex_id')) %>% | |
92 select(artist_id) %>% | |
93 unlist() %>% | |
94 unname() | |
95 | |
96 if(unique_artists) | |
97 return(unique(res)) | |
98 else | |
99 return(res) | |
100 | |
101 } | |
102 | |
103 # | |
104 get_classes <- function(excerpts, unique_classes = T, | |
105 use_names = T, | |
106 db = "../db/gtzan.db"){ | |
107 | |
108 excerpts_classes <- get_excerpts_classes(db = db) | |
109 class_names <- get_class_names(db = db) | |
110 | |
111 res <- | |
112 excerpts_classes %>% | |
113 inner_join(data.frame(ex_id = excerpts), by = c('ex_id')) %>% | |
114 select(class_id) | |
115 | |
116 if(use_names) | |
117 res <- res %>% | |
118 inner_join(class_names, by = c('class_id')) %>% | |
119 select(class) %>% | |
120 mutate(class = factor(class, | |
121 levels = unique(class_names$class))) | |
122 else | |
123 res <- res %>% | |
124 mutate(class_id = factor(class_id, | |
125 levels = unique(class_names$class_id))) | |
126 | |
127 res <- res %>% unlist() %>% unname() | |
128 | |
129 if(unique_classes) | |
130 return(unique(res)) | |
131 else | |
132 return(res) | |
133 | |
134 } |