# 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)