Computes the Matrix Profile and Profile Index for Multivariate Time Series.

mstomp_par(
  data,
  window_size,
  exclusion_zone = getOption("tsmp.exclusion_zone", 1/2),
  verbose = getOption("tsmp.verbose", 2),
  must_dim = NULL,
  exc_dim = NULL,
  n_workers = 2
)

mstomp(
  data,
  window_size,
  exclusion_zone = getOption("tsmp.exclusion_zone", 1/2),
  verbose = getOption("tsmp.verbose", 2),
  must_dim = NULL,
  exc_dim = NULL
)

Arguments

data

a matrix of numeric, where each column is a time series. Accepts vector (see details), list and data.frame too.

window_size

an int with the size of the sliding window.

exclusion_zone

a numeric. Size of the exclusion zone, based on window size (default is 1/2).

verbose

an int. See details. (Default is 2).

must_dim

an int or vector of which dimensions to forcibly include (default is NULL).

exc_dim

an int or vector of which dimensions to exclude (default is NULL).

n_workers

an int. Number of workers for parallel. (Default is 2).

Value

Returns a MultiMatrixProfile object, a list with the matrix profile mp, profile index pi

left and right matrix profile lmp, rmp and profile index lpi, rpi, window size w, number of dimensions n_dim, exclusion zone ez, must dimensions must and excluded dimensions exc.

If the input has only one dimension, returns the same as stomp().

Details

The Matrix Profile, has the potential to revolutionize time series data mining because of its generality, versatility, simplicity and scalability. In particular it has implications for time series motif discovery, time series joins, shapelet discovery (classification), density estimation, semantic segmentation, visualization, rule discovery, clustering etc. The MSTOMP computes the Matrix Profile and Profile Index for Multivariate Time Series that is meaningful for multidimensional MOTIF discovery. It uses the STOMP algorithm that is faster than STAMP but lacks its anytime property.

Although this functions handles Multivariate Time Series, it can also be used to handle Univariate Time Series. verbose changes how much information is printed by this function; 0 means nothing, 1 means text, 2 adds the progress bar, 3 adds the finish sound.

Functions

  • mstomp_par(): Parallel version.

  • mstomp(): Single thread version.

References

  • Yeh CM, Kavantzas N, Keogh E. Matrix Profile VI : Meaningful Multidimensional Motif Discovery.

  • Zhu Y, Imamura M, Nikovski D, Keogh E. Matrix Profile VII: Time Series Chains: A New Primitive for Time Series Data Mining. Knowl Inf Syst. 2018 Jun 2;1-27.

Website: https://sites.google.com/view/mstamp/

Website: http://www.cs.ucr.edu/~eamonn/MatrixProfile.html

See also

Other matrix profile computations: scrimp(), stamp_par(), stomp_par(), tsmp(), valmod()

Examples

# using all dimensions
mp <- mstomp(mp_toy_data$data[1:150, ], 30, verbose = 0)
# \donttest{
#' # using threads
mp <- mstomp_par(mp_toy_data$data[1:150, ], 30, verbose = 0)
#> Error in {    pro_muls <- matrix(Inf, length(idx_work[[i]]), n_dim)    pro_idxs <- matrix(-Inf, length(idx_work[[i]]), n_dim)    pro_muls_right <- matrix(Inf, length(idx_work[[i]]), n_dim)    pro_idxs_right <- matrix(-Inf, length(idx_work[[i]]), n_dim)    pro_muls_left <- matrix(Inf, length(idx_work[[i]]), n_dim)    pro_idxs_left <- matrix(-Inf, length(idx_work[[i]]), n_dim)    dist_pro <- matrix(0, matrix_profile_size, n_dim)    last_product <- matrix(0, matrix_profile_size, n_dim)    drop_value <- matrix(0, 1, n_dim)    for (j in seq_len(length(idx_work[[i]]))) {        idx <- idx_work[[i]][j]        query_window <- as.matrix(data[idx:(idx + window_size -             1), ])        if (j == 1) {            for (k in 1:n_dim) {                nni <- dist_profile(data[, k], data[, k], nn[[k]],                   index = idx)                dist_pro[, k] <- nni$distance_profile                last_product[, k] <- nni$last_product            }        }        else {            rep_drop_value <- kronecker(matrix(1, matrix_profile_size -                 1, 1), t(drop_value))            rep_query <- kronecker(matrix(1, matrix_profile_size -                 1, 1), t(query_window[window_size, ]))            last_product[2:(data_size - window_size + 1), ] <- last_product[1:(data_size -                 window_size), ] - data[1:(data_size - window_size),                 ] * rep_drop_value + data[(window_size + 1):data_size,                 ] * rep_query            last_product[1, ] <- first_product[idx, ]            dist_pro <- 2 * (window_size - (last_product - window_size *                 data_mean * kronecker(matrix(1, matrix_profile_size,                 1), t(data_mean[idx, ])))/(data_sd * kronecker(matrix(1,                 matrix_profile_size, 1), t(data_sd[idx, ]))))        }        drop_value <- query_window[1, ]        exc_zone_st <- max(1, idx - exclusion_zone)        exc_zone_ed <- min(matrix_profile_size, idx + exclusion_zone)        dist_pro[exc_zone_st:exc_zone_ed, ] <- Inf        dist_pro[data_sd < vars()$eps] <- Inf        if (skip_location[idx] || any(data_sd[idx, !mask_exc] <             vars()$eps)) {            dist_pro[] <- Inf        }        dist_pro[skip_location, ] <- Inf        dist_pro[, exc_dim] <- Inf        if (n_must > 0) {            mask_must <- rep(FALSE, n_dim)            mask_must[must_dim] <- TRUE            dist_pro_must <- dist_pro[, mask_must]            dist_pro[, mask_must] <- -Inf        }        if (n_dim > 1) {            dist_pro_sort <- t(apply(dist_pro, 1, sort))        }        else {            dist_pro_sort <- dist_pro        }        if (n_must > 0) {            dist_pro_sort[, 1:n_must] <- dist_pro_must        }        dist_pro_cum <- rep(0, matrix_profile_size)        dist_pro_merg <- rep(0, matrix_profile_size)        for (k in (max(1, n_must):(n_dim - n_exc))) {            dist_pro_cum <- dist_pro_cum + dist_pro_sort[, k]            dist_pro_merg[] <- dist_pro_cum/k            if (idx > (exclusion_zone + 1)) {                min_idx <- which.min(dist_pro_merg[1:(idx - exclusion_zone)])                min_val <- dist_pro_merg[min_idx]                pro_muls_left[j, k] <- min_val                pro_idxs_left[j, k] <- min_idx            }            if (idx < (matrix_profile_size - exclusion_zone)) {                min_idx <- which.min(dist_pro_merg[(idx + exclusion_zone):matrix_profile_size]) +                   idx + exclusion_zone - 1                min_val <- dist_pro_merg[min_idx]                pro_muls_right[j, k] <- min_val                pro_idxs_right[j, k] <- min_idx            }            min_idx <- which.min(dist_pro_merg)            min_val <- dist_pro_merg[min_idx]            pro_muls[j, k] <- min_val            pro_idxs[j, k] <- min_idx        }    }    pro_muls <- sqrt(pro_muls)    pro_muls_left <- sqrt(pro_muls_left)    pro_muls_right <- sqrt(pro_muls_right)    res <- list(pro_muls = pro_muls, pro_idxs = pro_idxs, pro_muls_left = pro_muls_left,         pro_idxs_left = pro_idxs_left, pro_muls_right = pro_muls_right,         pro_idxs_right = pro_idxs_right, idx = i)    res}: task 1 failed - "could not find function "mass_v3""

# force using dimensions 1 and 2
mp <- mstomp(mp_toy_data$data[1:200, ], 30, must_dim = c(1, 2))
#> 

#> mSTOMP [===>--------------------------]  14% at 117 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [===>--------------------------]  15% at 119 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  15% at 120 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  16% at 120 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  16% at 121 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  17% at 122 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  18% at 123 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  18% at 124 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  19% at 124 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  19% at 125 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  20% at 126 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  20% at 123 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  21% at 124 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  22% at 123 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  22% at 124 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  23% at 124 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  23% at 125 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  24% at 126 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  25% at 126 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  25% at 127 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  26% at 128 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  27% at 127 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  28% at 128 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  29% at 128 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  29% at 129 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  30% at 129 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  30% at 130 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  31% at 130 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  32% at 131 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  32% at 131 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  33% at 132 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  34% at 130 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  35% at 129 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  35% at 130 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  36% at 130 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  37% at 131 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  38% at 131 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  39% at 132 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  40% at 132 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  40% at 131 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  41% at 131 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  42% at 131 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  42% at 131 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  43% at 132 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  44% at 132 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  45% at 133 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  46% at 133 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  47% at 133 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  48% at 133 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  49% at 133 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  49% at 134 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  50% at 134 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  51% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  52% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  53% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  54% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  55% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  56% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  57% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  58% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  58% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  59% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  60% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  60% at 134 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  61% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=================>------------]  61% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  62% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  63% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  64% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  65% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  65% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  66% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  67% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  68% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  68% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  69% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  70% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  70% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  71% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  72% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  73% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  74% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  75% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  75% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  76% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  77% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  78% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  78% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  79% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  80% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  80% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  81% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  82% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  83% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  84% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  85% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  85% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  86% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  87% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  88% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  89% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  90% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  91% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  92% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  93% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  94% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  95% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  95% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  96% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  97% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  98% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=============================>]  99% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==============================] 100% at 134 it/s, elapsed:  1s, eta:  0s
#> 
#> Finished in 1.28 secs
# exclude dimensions 2 and 3
mp2 <- mstomp(mp_toy_data$data[1:200, ], 30, exc_dim = c(2, 3))
#> 

#> mSTOMP [====>-------------------------]  16% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  17% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  18% at 139 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [====>-------------------------]  18% at 140 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  19% at 140 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  20% at 140 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  20% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  21% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=====>------------------------]  22% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  22% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  23% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  23% at 139 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  24% at 139 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [======>-----------------------]  25% at 139 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  25% at 140 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  26% at 140 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  27% at 135 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=======>----------------------]  28% at 135 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  29% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  30% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  30% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  31% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [========>---------------------]  32% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  32% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  33% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  33% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  34% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [=========>--------------------]  35% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  35% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  36% at 136 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  36% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  37% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  37% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [==========>-------------------]  38% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  39% at 138 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  40% at 137 it/s, elapsed:  0s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  40% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  41% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===========>------------------]  42% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  42% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  43% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  44% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [============>-----------------]  44% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  45% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  46% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  47% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=============>----------------]  48% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  49% at 135 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  49% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  50% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [==============>---------------]  51% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  52% at 137 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  53% at 137 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  53% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  54% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [===============>--------------]  55% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  56% at 136 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  56% at 137 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  57% at 137 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [================>-------------]  58% at 137 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  58% at 137 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  59% at 138 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  60% at 138 it/s, elapsed:  1s, eta:  1s
#> 

#> mSTOMP [=================>------------]  60% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=================>------------]  61% at 137 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=================>------------]  61% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  62% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  63% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  64% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==================>-----------]  65% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  65% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  66% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  67% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===================>----------]  68% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  68% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  69% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  70% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [====================>---------]  71% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  72% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  73% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  73% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  74% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=====================>--------]  75% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  75% at 133 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  76% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  77% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [======================>-------]  78% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  78% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  79% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  80% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=======================>------]  81% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  82% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  83% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  84% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  84% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [========================>-----]  85% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  85% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  86% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  87% at 134 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  87% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=========================>----]  88% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  89% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  90% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  91% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==========================>---]  91% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  92% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  93% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  94% at 135 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  94% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [===========================>--]  95% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  95% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  96% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  97% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [============================>-]  98% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [=============================>]  99% at 136 it/s, elapsed:  1s, eta:  0s
#> 

#> mSTOMP [==============================] 100% at 136 it/s, elapsed:  1s, eta:  0s
#> 
#> Finished in 1.26 secs
# }