code: def _join_summary_file(data, summary_filename="msd_summary_file.h5"):
      """Gets the trackinfo array by joining taste profile to the track summary file"""
      msd = h5py.File(summary_filename)
  
      # create a lookup table of trackid -> position
      track_lookup = dict(
          (t.encode("utf8"), i)
          for i, t in enumerate(data["track"].cat.categories)
      )
  
      # join on trackid to the summary file to get the artist/album/songname
      track_info = np.empty(
          shape=(len(track_lookup), 4), dtype=np.object
      )
      with tqdm(total=len(track_info)) as progress:
          for song in msd["metadata"]["songs"]:
              trackid = song[17]
              if trackid in track_lookup:
                  pos = track_lookup[trackid]
                  track_info[pos] = [
                      x.decode("utf8")
                      for x in (trackid, song[9], song[14], song[18])
                  ]
                  progress.update(1)
  
      return track_info
  
file_path: implicit/implicit/datasets/million_song_dataset.py
imports: import logging
  import os
  import time
  import h5py
  import numpy
  from scipy.sparse import coo_matrix, csr_matrix
  from tqdm.auto import tqdm
  from implicit.datasets import _download
label_desc: Use image node_id 4 for calling a global function with example usage: _join_summary_file(data, summary_filename) and returns: track_info