code: def rearrange_intra_scaffolds(scaffolds):
  
      
  
      scaffolds = format_info_frags(scaffolds)
      new_scaffolds = {}
  
      ordering = dict()
  
      for name, scaffold in scaffolds.items():
          new_scaffold = []
  
          ordering = dict()
          order = 0
  
          my_blocks = []
  
          for _, my_block in itertools.groupby(scaffold, operator.itemgetter(0)):
  
              my_bins = list(my_block)
              my_blocks.append(my_bins)
              block_length = len(my_bins)
              block_name = my_bins[0][0]
  
              if block_name in ordering.keys():
                  if block_length > ordering[block_name][1]:
                      ordering[block_name] = (order, block_length)
              else:
                  ordering[block_name] = (order, block_length)
              order += 1
  
          def block_order(block):
              return ordering[block[0][0]][0]
  
          for my_block in sorted(my_blocks, key=block_order):
              for my_bin in my_block:
                  new_scaffold.append(my_bin)
  
          new_scaffolds[name] = copy.deepcopy(new_scaffold)
  
      return new_scaffolds
docs: Rearranges all bins within each scaffold such that all bins belonging
      to the same initial contig are grouped together in the same order. When
      two such groups are found, the smaller one is moved to the larger one.