code: def _map_trajectory(self):
          
          self.trajectory_map = {}
          with open(self.filepath, 'r') as trajectory_file:
              with closing(
                      mmap(
                          trajectory_file.fileno(), 0,
                          access=ACCESS_READ)) as mapped_file:
                  progress = 0
                  line = 0
                  frame = -1
                  frame_start = 0
                  while progress <= len(mapped_file):
                      line = line + 1
                      # We read a binary data from a mapped file.
                      bline = mapped_file.readline()
                      # If the bline length equals zero we terminate.
                      # We reached end of the file but still add the last frame!
                      if len(bline) == 0:
                          frame = frame + 1
                          if progress - frame_start > 10:
                              self.trajectory_map[frame] = [
                                  frame_start, progress
                              ]
                          break
                      # We need to decode byte line into an utf-8 string.
                      sline = bline.decode("utf-8").strip('\n').split()
                      # We extract map's byte coordinates for each frame
                      if len(sline) == 1 and sline[0] == 'END':
                          frame = frame + 1
                          self.trajectory_map[frame] = [frame_start, progress]
                          frame_start = progress
                      # Here we extract the map's byte coordinates for the header
                      # And also the periodic system type needed for later.
                      progress = progress + len(bline)
              self.no_of_frames = frame
docs: Return filepath as a class attribute