Example #1
0
    def testEmptyIntersection(self):
        values, ix1, ix2 = collections.intersect([1, 2, 3], [4, 5, 6])
        self.assertEqual(len(values), 0)
        self.assertEqual(len(ix1), 0)
        self.assertEqual(len(ix2), 0)

        values, ix1, ix2 = collections.intersect([], [])
        self.assertEqual(len(values), 0)
        self.assertEqual(len(ix1), 0)
        self.assertEqual(len(ix2), 0)
Example #2
0
    def testEmptyIntersection(self):
        values, ix1, ix2 = collections.intersect([1, 2, 3], [4, 5, 6])
        self.assertEqual(len(values), 0)
        self.assertEqual(len(ix1), 0)
        self.assertEqual(len(ix2), 0)

        values, ix1, ix2 = collections.intersect([], [])
        self.assertEqual(len(values), 0)
        self.assertEqual(len(ix1), 0)
        self.assertEqual(len(ix2), 0)
Example #3
0
    def testPartialIntersectionSkipNones(self):
        v1 = [None, 1, None, None, 2, None, 3, None, 4]
        v2 = [1, None, 2, None, 3, 4]

        values, ix1, ix2 = collections.intersect(v1, v2, True)
        self.assertEqual(values, [1, 2, 3, 4])
        self.assertEqual(ix1, [1, 4, 6, 8])
        self.assertEqual(ix2, [0, 2, 4, 5])

        values, ix2, ix1 = collections.intersect(v2, v1, True)
        self.assertEqual(values, [1, 2, 3, 4])
        self.assertEqual(ix1, [1, 4, 6, 8])
        self.assertEqual(ix2, [0, 2, 4, 5])
Example #4
0
    def testPartialIntersection6(self):
        v1 = [1, 1, 2, 2, 3, 3]
        v2 = [1, 2, 3]

        values, ix1, ix2 = collections.intersect(v1, v2)
        self.assertEqual(values, [1, 2, 3])
        self.assertEqual(ix1, [0, 2, 4])
        self.assertEqual(ix2, [0, 1, 2])

        values, ix2, ix1 = collections.intersect(v2, v1)
        self.assertEqual(values, [1, 2, 3])
        self.assertEqual(ix1, [0, 2, 4])
        self.assertEqual(ix2, [0, 1, 2])
Example #5
0
    def testPartialIntersectionSkipNones(self):
        v1 = [None, 1, None, None, 2, None, 3, None, 4]
        v2 = [1, None, 2, None, 3, 4]

        values, ix1, ix2 = collections.intersect(v1, v2, True)
        self.assertEqual(values, [1, 2, 3, 4])
        self.assertEqual(ix1, [1, 4, 6, 8])
        self.assertEqual(ix2, [0, 2, 4, 5])

        values, ix2, ix1 = collections.intersect(v2, v1, True)
        self.assertEqual(values, [1, 2, 3, 4])
        self.assertEqual(ix1, [1, 4, 6, 8])
        self.assertEqual(ix2, [0, 2, 4, 5])
Example #6
0
    def testPartialIntersection6(self):
        v1 = [1, 1, 2, 2, 3, 3]
        v2 = [1, 2, 3]

        values, ix1, ix2 = collections.intersect(v1, v2)
        self.assertEqual(values, [1, 2, 3])
        self.assertEqual(ix1, [0, 2, 4])
        self.assertEqual(ix2, [0, 1, 2])

        values, ix2, ix1 = collections.intersect(v2, v1)
        self.assertEqual(values, [1, 2, 3])
        self.assertEqual(ix1, [0, 2, 4])
        self.assertEqual(ix2, [0, 1, 2])
Example #7
0
	def update(self):
		if self.__isDirty():
			# Search for datetime intersections between the data series,
			# but start right after the last one found.
			ds1DateTimes = self.__ds1.getDecorated().getDateTimes()
			ds2DateTimes = self.__ds2.getDecorated().getDateTimes()
			if self.__lastPos1 != None:
				ds1DateTimes = ds1DateTimes[self.__lastPos1+1:]
			if self.__lastPos2 != None:
				ds2DateTimes = ds2DateTimes[self.__lastPos2+1:]

			# Calculate the intersections.
			dateTimes, pos1, pos2 = collections.intersect(ds1DateTimes, ds2DateTimes)

			# Update each array's relative position to make them absolute positions.
			if self.__lastPos1 != None and len(pos1):
				pos1 = [self.__lastPos1 + pos + 1 for pos in pos1]
			if self.__lastPos2 != None and len(pos2):
				pos2 = [self.__lastPos2 + pos + 1 for pos in pos2]

			# Update the last intersection.
			if len(pos1):
				self.__lastPos1 = pos1[-1]
			if len(pos2):
				self.__lastPos2 = pos2[-1]

			# Update the aligned data series.
			self.__ds1.update(dateTimes, pos1)
			self.__ds2.update(dateTimes, pos2)
			self.__resetDirty()
Example #8
0
 def testPartialIntersection3(self):
     values, ix1, ix2 = collections.intersect([1, 2, 5], [1, 3, 5])
     self.assertEqual(len(values), 2)
     self.assertEqual(values[0], 1)
     self.assertEqual(values[1], 5)
     self.assertEqual(ix1[0], 0)
     self.assertEqual(ix1[1], 2)
     self.assertEqual(ix2[0], 0)
     self.assertEqual(ix2[1], 2)
Example #9
0
 def testPartialIntersection2(self):
     values, ix1, ix2 = collections.intersect([1, 2, 4], [1, 2, 3])
     self.assertEqual(len(values), 2)
     self.assertEqual(values[0], 1)
     self.assertEqual(values[1], 2)
     self.assertEqual(ix1[0], 0)
     self.assertEqual(ix1[1], 1)
     self.assertEqual(ix2[0], 0)
     self.assertEqual(ix2[1], 1)
Example #10
0
    def testFullIntersectionWithDateTimes(self):
        size = 1000
        dateTimes1 = []
        dateTimes2 = []
        now = datetime.datetime.now()
        for i in xrange(size):
            dateTimes1.append(now + datetime.timedelta(seconds=i))
            dateTimes2.append(now + datetime.timedelta(seconds=i))

        self.assertEqual(dateTimes1, dateTimes2)

        values, ix1, ix2 = collections.intersect(dateTimes1, dateTimes2)
        self.assertEqual(values, dateTimes1)
        self.assertEqual(values, dateTimes2)
        self.assertEqual(ix1, range(size))
        self.assertEqual(ix1, ix2)
Example #11
0
    def testFullIntersectionWithDateTimes(self):
        size = 1000
        dateTimes1 = []
        dateTimes2 = []
        now = datetime.datetime.now()
        for i in xrange(size):
            dateTimes1.append(now + datetime.timedelta(seconds=i))
            dateTimes2.append(now + datetime.timedelta(seconds=i))

        self.assertEqual(dateTimes1, dateTimes2)

        values, ix1, ix2 = collections.intersect(dateTimes1, dateTimes2)
        self.assertEqual(values, dateTimes1)
        self.assertEqual(values, dateTimes2)
        self.assertEqual(ix1, list(range(size)))
        self.assertEqual(ix1, ix2)
Example #12
0
 def testPartialIntersection4(self):
     values, ix1, ix2 = collections.intersect([1, 2, 3], [2, 4, 6])
     self.assertEqual(len(values), 1)
     self.assertEqual(values[0], 2)
     self.assertEqual(ix1[0], 1)
     self.assertEqual(ix2[0], 0)
Example #13
0
 def testFullIntersection(self):
     values, ix1, ix2 = collections.intersect([1, 2, 3], [1, 2, 3])
     self.assertEqual(len(values), 3)
     self.assertEqual(len(ix1), 3)
     self.assertEqual(len(ix2), 3)
     self.assertEqual(ix1, ix2)
Example #14
0
 def testFullIntersection(self):
     values, ix1, ix2 = collections.intersect([1, 2, 3], [1, 2, 3])
     self.assertEqual(len(values), 3)
     self.assertEqual(len(ix1), 3)
     self.assertEqual(len(ix2), 3)
     self.assertEqual(ix1, ix2)
Example #15
0
 def testPartialIntersection5(self):
     values, ix1, ix2 = collections.intersect([1, 2, 3], [3, 6])
     self.assertEqual(len(values), 1)
     self.assertEqual(values[0], 3)
     self.assertEqual(ix1[0], 2)
     self.assertEqual(ix2[0], 0)