progress on main.R
[epclust.git] / code / draft_R_pkg / R / algorithms.R
index eda05e5..97dce90 100644 (file)
@@ -1,17 +1,24 @@
-curvesToCoeffs = function(series)
+#NOTE: always keep ID in first column
+curvesToCoeffs = function(series, wf)
 {
-       #... return wavelets coeffs : compute in parallel !
-       #TODO: always keep ID in first column
-}
-
-coeffsToCurves = function(coeffs)
-{
-       #re-expand on wavelet basis
+       library(wavelets)
+       L = length(series[1,])
+       D = ceiling( log(L-1) )
+       nb_sample_points = 2^D
+       #TODO: parallel::parApply() ?!
+       res = apply(series, 1, function(x) {
+               interpolated_curve = spline(1:(L-1), x[2:L], n=nb_sample_points)$y
+               W = wavelets::dwt(interpolated_curve, filter=wf, D)@W
+               nrj_coeffs = rev( sapply( W, function(v) ( sqrt( sum(v^2) ) ) ) )
+               return ( c(x[1], nrj_coeffs) )
+       })
+       return (as.data.frame(res))
 }
 
 getClusters = function(data, K)
 {
-       pam_output = pam(data, K)
+       library(cluster)
+       pam_output = cluster::pam(data, K)
        return ( list( clusts=pam_output$clustering, medoids=pam_output$medoids,
                ranks=pam_output$id.med ) )
 }