コード例 #1
0
 def testadd(self):
     """the + operator works as expected"""
     a = segment.DataContainer(self.x, self.y)
     b = segment.DataContainer(self.x2, self.y2)
     c = a + b
     self.assertTrue(numpy.all(c.x == numpy.append(self.x, self.x2)))
     self.assertTrue(numpy.all(c.y == numpy.append(self.y, self.y2)))
コード例 #2
0
def seg(x, y, name_, num):
    xyData = segment.DataContainer(x, y)
    # Create a segmenter instance which fill fit 2 straight lines
    segmenter = segment.TopDown(segment.LinearRegression, num)
    # segmenter = segment.BottomUp(segment.LinearRegression, num)
    # segmenter = segment.TopDown(segment.LineThroughEndPoints, num)
    # do the fitting
    fits = segmenter.segment(xyData)

    fitarr = []
    idx = 0
    for fit_ in fits.fits:
        # print(fit)
        # print(fit.data)
        # print(fit.coeff[0])
        # print(fit.coeff[1])
        # print((fit.data.y[len(fit.data.y) - 1] - fit.data.y[0]) / (fit.data.x[len(fit.data.x) - 1] - fit.data.x[0]))
        fitarr.append([
            fit_.data,
            len(fit_.data), fit_.coeff[0], fit_.coeff[1], fit_, fits
        ])
    # print(fits)
    # fits.plot()
    # segment.plt.show()
    # exit()
    # segment.plt.savefig(name_ + "_segments")
    # segment.plt.close()
    return fitarr
コード例 #3
0
def seg(x, y, name_, num):
    xyData = segment.DataContainer(x, y)
    segmenter = segment.TopDown(segment.LinearRegression, num)
    fits = segmenter.segment(xyData)

    fitarr = []
    idx = 0
    for fit_ in fits.fits:
        fitarr.append([
            fit_.data,
            len(fit_.data), fit_.coeff[0], fit_.coeff[1], fit_, fits
        ])

    return fitarr
コード例 #4
0
 def setUp(self):
     self.a = segment.LineThroughEndPoints(
         segment.DataContainer([1, 2], [1, 2]))
     self.b = segment.LineThroughEndPoints(
         segment.DataContainer([2, 3], [2, 1]))
コード例 #5
0
 def testiadd(self):
     a = segment.DataContainer(self.x, self.y)
     b = segment.DataContainer(self.x2, self.y2)
     a += b
     self.assertTrue(numpy.all(a.x == numpy.append(self.x, self.x2)))
     self.assertTrue(numpy.all(a.y == numpy.append(self.y, self.y2)))
コード例 #6
0
 def testcontainsx(self):
     a = segment.DataContainer(self.x, self.y)
     self.assertTrue(a.contains(2))
コード例 #7
0
 def testxrange(self):
     """ xrange property """
     a = segment.DataContainer(self.x, self.y)
     self.assertEqual(a.xrange, (1, 3))
コード例 #8
0
 def testinit(self):
     """construction from x and y data"""
     a = segment.DataContainer(self.x, self.y)
     self.assertTrue(numpy.all(self.x == a.x))
     self.assertTrue(numpy.all(self.y == a.y))
コード例 #9
0
#!/usr/bin/env python

from __future__ import print_function

import segment

# Create some data
data = segment.DataContainer([0, 1, 2, 3, 4], [0, 1, 2, 1, 0])

# Create a segmenter instance which fill fit 2 straight lines
segmenter = segment.TopDown(segment.LinearRegression, 2)

# do the fitting
fits = segmenter.segment(data)

# extract the two lines
line1, line2 = fits.fits

# Print a summary
print "I have fitted two lines to the data given in this table:"
for x, y in zip(data.x, data.y):
    print(x, y)

print "The overall error is", fits.error
print "The fits are as follows:"
for i, fit in enumerate(fits.fits):
    print(i + 1, "-", fit)

# plot a nice graph
fits.plot()
segment.plt.show()
コード例 #10
0
 def testcontainsx(self):
     a = segment.DataContainer(self.x, self.y)
     assert a.contains(2)
コード例 #11
0
 def testxrange(self):
     """ xrange property """
     a = segment.DataContainer(self.x, self.y)
     assert a.xrange == (1, 3)