code: def _compute_split_boundaries(split_probs, n_items):
      """Computes boundary indices for each of the splits in split_probs.
  
      Args:
        split_probs: List of (split_name, prob), e.g. [('train', 0.6), ('dev', 0.2),
          ('test', 0.2)]
        n_items: Number of items we want to split.
  
      Returns:
        The item indices of boundaries between different splits. For the above
        example and n_items=100, these will be
        [('train', 0, 60), ('dev', 60, 80), ('test', 80, 100)].
      """
      if len(split_probs) > n_items:
          raise ValueError(
              "Not enough items for the splits. There are {splits} "
              "splits while there are only {items} items".format(
                  splits=len(split_probs), items=n_items
              )
          )
      total_probs = sum(p for name, p in split_probs)
      if abs(1 - total_probs) > 1e-8:
          raise ValueError(
              "Probs should sum up to 1. probs={}".format(split_probs)
          )
      split_boundaries = []
      sum_p = 0.0
      for name, p in split_probs:
          prev = sum_p
          sum_p += p
          split_boundaries.append(
              (name, int(prev * n_items), int(sum_p * n_items))
          )
  
      # Guard against rounding errors.
      split_boundaries[-1] = (
          split_boundaries[-1][0],
          split_boundaries[-1][1],
          n_items,
      )
  
      return split_boundaries
  
file_path: datasets/tensorflow_datasets/audio/crema_d.py
imports: from __future__ import annotations
  import collections
  import os
  import numpy
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
  import tensorflow_datasets.public_api
label_desc: Use image node_id 1 for calling a global function with example usage: _compute_split_boundaries(split_probs, n_items) and returns: split_boundaries