docstr: Unpack the labels from the aggregated labels to the original labels.
  
  Args:
      Y_aggr (Tensor): 
          Aggregated label vector from the merged segments.
      window_range_list (List[List[int]]): 
          List of window ranges for each of the merged segments.
      absolute_merge_mapping (List[List[torch.Tensor]]): 
          List of absolute mappings for each of the merged segments. Each list element contains two tensors:
              - The first tensor represents the absolute index of the bypassed segment (segments that remain unchanged).
              - The second tensor represents the absolute index of the merged segment (segments that have had their indexes changed).
      org_len (int): 
          Original length of the labels. In most cases, this is a fairly large number (on the order of 10^5).
  
  Returns:
      Y_unpack (Tensor): 
          Unpacked labels derived from the aggregated labels.
docstr_tok: ["Unpack","the","labels","from","the","aggregated","labels","to","the","original","labels",".","Args",":","Y_aggr","(","Tensor",")",":","Aggregated","label","vector","from","the","merged","segments",".","window_range_list","(","List","[","List","[","int","]","]",")",":","List","of","window","ranges","for","each","of","the","merged","segments",".","absolute_merge_mapping","(","List","[","List","[","torch.Tensor","]","]",")",":","List","of","absolute","mappings","for","each","of","the","merged","segments",".","Each","list","element","contains","two","tensors",":","-","The","first","tensor","represents","the","absolute","index","of","the","bypassed","segment","(","segments","that","remain","unchanged",")",".","-","The","second","tensor","represents","the","absolute","index","of","the","merged","segment","(","segments","that","have","had","their","indexes","changed",")",".","org_len","(","int",")",":","Original","length","of","the","labels",".","In","most","cases",",","this","is","a","fairly","large","number","(","on","the","order","of","10^5",")",".","Returns",":","Y_unpack","(","Tensor",")",":","Unpacked","labels","derived","from","the","aggregated","labels","."]
code: def unpack_labels(
      self,
      Y_aggr: torch.Tensor,
      window_range_list: List[List[int]],
      absolute_merge_mapping: List[List[torch.Tensor]],
      org_len: int,
  ) -> torch.LongTensor:
      """
      Unpack the labels from the aggregated labels to the original labels.
  
      Args:
          Y_aggr (Tensor):
              Aggregated label vector from the merged segments.
          window_range_list (List[List[int]]):
              List of window ranges for each of the merged segments.
          absolute_merge_mapping (List[List[torch.Tensor]]):
              List of absolute mappings for each of the merged segments. Each list element contains two tensors:
                  - The first tensor represents the absolute index of the bypassed segment (segments that remain unchanged).
                  - The second tensor represents the absolute index of the merged segment (segments that have had their indexes changed).
          org_len (int):
              Original length of the labels. In most cases, this is a fairly large number (on the order of 10^5).
  
      Returns:
          Y_unpack (Tensor):
              Unpacked labels derived from the aggregated labels.
      """
      Y_unpack = torch.zeros((org_len,)).long().to(Y_aggr.device)
      for win_rng, abs_mapping in zip(
          window_range_list, absolute_merge_mapping
      ):
          inferred_merged_embs = Y_aggr[win_rng[0] : win_rng[1]]
          if len(abs_mapping[1]) > 0:
              Y_unpack[abs_mapping[1]] = inferred_merged_embs[
                  -1
              ].clone()  # Merged
              if len(abs_mapping[0]) > 0:
                  Y_unpack[abs_mapping[0]] = inferred_merged_embs[
                      :-1
                  ].clone()  # Bypass
          else:
              if len(abs_mapping[0]) > 0:
                  Y_unpack[
                      abs_mapping[0]
                  ] = inferred_merged_embs.clone()
      return Y_unpack
  
file_path: NeMo/nemo/collections/asr/parts/utils/longform_clustering.py
imports: from typing import Dict, List, Tuple
  import torch
  from tqdm import tqdm
  from nemo.collections.asr.parts.utils.offline_clustering import SpeakerClustering, get_scale_interpolated_embs, getCosAffinityMatrix, split_input_data
  from nemo.collections.asr.parts.utils.online_clustering import get_merge_quantity, run_reducer
label_desc: Use image node_id 3 for calling the LongFormSpeakerClustering obj's underlying member method code with example usage: obj.unpack_labels(Y_aggr, window_range_list, absolute_merge_mapping, org_len) and returns: Y_unpack