code: def _parse_sot_segment(self, fptr):
          
          offset = fptr.tell() - 2
  
          read_buffer = fptr.read(10)
          data = struct.unpack('>HHIBB', read_buffer)
  
          length = data[0]
          isot = data[1]
          psot = data[2]
          tpsot = data[3]
          tnsot = data[4]
  
          segment = SOTsegment(isot, psot, tpsot, tnsot, length, offset)
  
          # Need to keep easy access to tile offsets and lengths for when
          # we encounter start-of-data marker segments.
  
          self._tile_offset.append(segment.offset)
          if segment.psot == 0:
              tile_part_length = (self.offset + self.length -
                                  segment.offset - 2)
          else:
              tile_part_length = segment.psot
          self._tile_length.append(tile_part_length)
  
          return segment
docs: Parse the SOT segment.
  
          Parameters
          ----------
          fptr : file
              Open file object.
  
          Returns
          -------
          SOTSegment
              The current SOT segment.