# The barcode order is a succession of multiset of barcodes

self.barcode_order=[]

# The udg order is a succession of udgs following some rules:

# 1 - Two successive udgs define 3 successive multiset of barcodes: A-B ; A⋂B ; B-A

# 2 - 3 successive udgs A, B, C can't define successive sets with "holes".

# ie C can't overlap A-B without completely covering A⋂B

self.udg_order=[]

# udg_per_set have the same size than barcode_order.

# All the udg at index i completely cover the barcodes in barcode_order[i]

self.udg_per_set=[]

# --- Counting components ---

# Number of barcode ordered. Same as the sum of all the values in all the multisets in barcode_order

self.len_barcodes=0

# The number of successive multiset. Same as len(barcode_order).

self.len_sets=0

# The number of successive udg. Same as len(udg_order)

self.len_udgs=0

# TODO: score

def_get_right_overlaps(self,udg):

"""" Get the overlap of an udg with the right part of the multiset partial order.

:param udg: The udg to overlap

:returns: The index of the leftmost overlapped multiset, the non overlapped part of the leftmost covered multiset, the new multiset (non overlapping barcodes)