Basic UseΒΆ

An example of instancing the Segmenter class to use the convenience methods on array data

>>> import seg1d
>>> import numpy as np
>>> import matplotlib.pylab as plt

Then we generate some data

>>> x = np.linspace(-np.pi*2, np.pi*2, 2000) #create an array of data
>>> targ = np.sin(x)  # target data from a sin function 
>>> t_s,t_e = 200,400 # define a sub-series

To assign the data to the Segmenter, first we create an instance of it and then use the set_target() and add_reference() methods.

>>> s = seg1d.Segmenter()  # instance of the segmenter
>>> s.minW, s.maxW, s.step = 98, 105, 1  # scaling parameters
>>> s.set_target(targ) # set target and reference data
>>> s.add_reference(targ[t_s:t_e])
>>> segments = s.segment() # run segmentation algorithm
>>> np.around(segments, decimals=7)
array([[2.000000e+02, 4.000000e+02, 1.000000e+00],
       [1.200000e+03, 1.398000e+03, 9.999999e-01]])

Using matplotlib we can visualize the results

>>> plt.figure(figsize=(10,3)) 
>>> #plot the full sine wave
>>> plt.plot(x, targ,linewidth=8,alpha=0.2,label='Target') 
>>> #plot the original reference segment
>>> plt.plot(x[t_s:t_e], targ[t_s:t_e],linewidth=6,alpha=0.7,label='Reference') 
>>>
>>> #plot all segments found
>>> seg_num = 1
>>> for s,e,c in segments:
...     plt.plot(x[s:e], targ[s:e],dashes=[1,1],linewidth=4,alpha=0.8, 
...     label='Segment {}'.format(seg_num)) 
...     seg_num += 1 
>>> plt.xlabel('Angle [rad]') 
>>> plt.ylabel('sin(x)') 
>>> plt.legend() 
>>> plt.tight_layout() 
>>> plt.show() 

(Source code)

_images/api_basic-1.png

Previous topic

API Examples

Next topic

ECG