Package: mass-ts
IntroductionMASS allows you to search a time series for a subquery resulting in an array of distances. These array of distances enable you to identify similar or dissimilar subsequences compared to your query. At its core, MASS computes Euclidean distances under z-normalization in an efficient manner and is domain agnostic in nature. It is the fundamental algorithm that the matrix profile algorithm is built on top of.mass-ts is a python 2 and 3 compatible library.Free software: Apache Software License 2.0FeaturesOriginal Author's AlgorithmsMASS - the first implementation of MASSMASS2 - the second implementation of MASS that is significantly faster. Typically this is the one you will use.MASS3 - a piecewise version of MASS2 that can be tuned to your hardware. Generally this is used to search very large time series.MASS_weighted - TODOLibrary Specific AlgorithmsMASS2_batch - a batch version of MASS2 that reduces overall memory usage, provides parallelization and enables you to find top K number of matches within the time series. The goal of using this implementation is for very large time series similarity search.top_k_motifs - find the top K number of similar subsequences to your given query. It returns the starting index of the subsequence.top_k_discords - find the top K number of dissimilar subsequences to your given query. It returns the starting index of the subsequence.MASS2_gpu - a GPU implementation of MASS2 leveraging the Python library CuPy.Installationpip install mass-tsGPU SupportPlease follow theinstallation guide for CuPy. It covers what drivers and environmental dependencies are required. Once you are finished there, you can install GPU support for the algorithms.pip install mass-ts[gpu]Example UsageA dedicated repository for practical examples can be found at themass-ts-examples repository.importnumpyasnpimportmass_tsasmtsts=np.loadtxt('ts.txt')query=np.loadtxt('query.txt')# massdistances=mts.mass(ts,query)# mass2distances=mts.mass2(ts,query)# mass3distances=mts.mass3(ts,query,256)# mass2_gpudistances=mts.mass2_gpu(ts,query)# mass2_batch# start a multi-threaded batch job with all cpu cores and give me the top 5 matches.# note that batch_size partitions your time series into a subsequence similarity search.# even for large time series in single threaded mode, this is much more memory efficient than# MASS2 on its own.batch_size=10000top_matches=5n_jobs=-1indices,distances=mts.mass2_batch(ts,query,batch_size,top_matches=top_matches,n_jobs=n_jobs)# find minimum distancemin_idx=np.argmin(distances)# find top 4 motif starting indicesk=4exclusion_zone=25top_motifs=mts.top_k_motifs(distances,k,exclusion_zone)# find top 4 discord starting indicesk=4exclusion_zone=25top_discords=mts.top_k_discords(distances,k,exclusion_zone)CitationsAbdullah Mueen, Yan Zhu, Michael Yeh, Kaveh Kamgar, Krishnamurthy Viswanathan, Chetan Kumar Gupta and Eamonn Keogh (2015), The Fastest Similarity Search Algorithm for Time Series Subsequences under Euclidean Distance, URL:http://www.cs.unm.edu/~mueen/FastestSimilaritySearch.html=======
History0.1.0 (2019-05-16)First release on PyPI.0.1.1 (2019-05-17)Minor precision bug fixes.0.1.2 (2019-05-19)mass2_batch release for efficient large time series searching.0.1.3 (2019-05-19)top_k_motifs - find the top k similar subsequences given a distance profile.top_k_discords - find the top k dissimilar subsequences given a distance profile.0.1.4 (2019-10-04)add GPU implementation of MASS2 - mass2_gpu.