merge with remote
[epclust.git] / data / curves_to_db / example.R
diff --git a/data/curves_to_db/example.R b/data/curves_to_db/example.R
new file mode 100644 (file)
index 0000000..d8c6a47
--- /dev/null
@@ -0,0 +1,46 @@
+require(RPostgreSQL)
+
+##############################
+# Follow steps in README first
+##############################
+
+nb_curves_per_request <- 100 #curves per (select) request
+
+# Init connection with DB
+driver <- PostgreSQL(fetch.default.rec = nb_curves_per_request)
+con <- dbConnect(driver, user="irsdi", password="irsdi2017",
+       host="localhost", port="5432", dbname="edf25m")
+
+# Fill associative array, map index to identifier
+indexToID_inDB <- as.character(
+       dbGetQuery(con, 'SELECT DISTINCT id FROM series')[,"id"] )
+
+# Function to retrieve curves within some indices range
+getCurves <- function(indices)
+{
+       indices = indices[ indices <= length(indexToID_inDB) ]
+       if (length(indices) == 0)
+               return (NULL)
+       request <- "SELECT curve FROM series WHERE id in ("
+       for (i in seq_along(indices))
+       {
+               request <- paste(request, indexToID_inDB[ indices[i] ],  sep="")
+               if (i < length(indices))
+                       request <- paste(request, ",", sep="")
+       }
+       request <- paste(request, ")", sep="")
+       df_series <- dbGetQuery(con, request)
+
+#weird result: an integer, and then string "{val1,val2,val3,...,valD}" :/
+#print(summary(df_series))
+df_series
+#      matrix(df_series[,"value"], ncol=length(indices))
+}
+
+# Test
+#curves <- getCurves(c(1:3,7,11))
+library(epclust)
+res <- claws(getCurves, 50, 15, 500, 500, random=FALSE, ncores_clust=3, verbose=TRUE)
+
+dbDisconnect(con)
+unlink(temp_file)