code: def _merge_files(windows, nb_cpu):
      # type: (Iterable[pd.DataFrame], int) -> pd.DataFrame
      
  
      # windows is a list of chromosome dfs per file
      windows = iter(windows)  # can iterate over because it is odict_values
      merged = next(windows)
  
      # if there is only one file, the merging is skipped since the windows is used up
      for chromosome_dfs in windows:
          # merge_same_files merges the chromosome files in parallel
          merged = merge_same_files(merged, chromosome_dfs, nb_cpu)
  
      return merged
docs: Merge lists of chromosome bin df chromosome-wise.
  
      windows is an OrderedDict where the keys are files, the values are lists of
      dfs, one per chromosome.
  
      Returns a list of dataframes, one per chromosome, with the collective count
      per bin for all files.
  
      TODO: is it faster to merge all in one command?