Combining Segments with Set Logic

Segment objects can be combined with set logic. Distill’s Segmentation package provides three functions that perform set logic: union, intersection, and difference.

Union

A union can be performed using the union function. An example usage of this function is shown below:

# Segment 1
segment1.get_uids()     #[uid1, uid2, uid3]

# Segment 2
segment2.get_uids()     #[uid3, uid4, uid5]

# Perform Union
new_segment = distill.union("new_segment", segment1, segment2)
new_segment.get_uids()  #[uid1, uid2, uid3, uid4, uid5]

The above code will return a new Segment object with the given segment_name, start and end values based on the smallest clientTime and largest clientTime of the given Segment objects, and a list of the union of the UIDs of segment1 and segment2.

Intersection

An intersection can be performed using the intersection function. An example usage of this function is shown below:

# Segment 1
segment1.get_uids()   #[uid1, uid3, uid6]

# Segment 2
segment2.get_uids()     #[uid3, uid6, uid9]

new_segment = distill.intersection("new_segment", segment1, segment2)
new_segment.get_uids()  #[uid3, uid6]

The above code will return a new Segment object (similarly to union) with UIDs that represent the intersection of the UIDs of segment1 and segment2.

Difference

The difference function creates a new Segment object based on the logical difference of two Segment objects.

# Segment 1
segment1.get_uids()   #[uid1, uid2, uid3]

# Segment 2
segment2.get_uids()     #[uid2, uid4, uid5]

new_segment1 = distill.difference("new_segment_1", segment1, segment2)
new_segment1.get_uids()  #[uid1, uid3]

new_segment2 = distill.difference("new_segment_2", segment2, segment1)
new_segment2.get_uids()  #[uid4, uid5]

The above code will return a new Segment object (similarly to union and intersection) with UIDs that represent the difference of the UIDs of segment1 and segment2.