code: def _read_pnm_header(self, data):
          
          bpm = data[1:2] in b"14"
          regroups = re.search(b"".join((
              b"(^(P[123456]|P7 332)\s+(?:#.*[\r\n])*",
              b"\s*(\d+)\s+(?:#.*[\r\n])*",
              b"\s*(\d+)\s+(?:#.*[\r\n])*" * (not bpm),
              b"\s*(\d+)\s(?:\s*#.*[\r\n]\s)*)")), data).groups() + (1, ) * bpm
          self.header = regroups[0]
          self.magicnum = regroups[1]
          self.width = int(regroups[2])
          self.height = int(regroups[3])
          self.maxval = int(regroups[4])
          self.depth = 3 if self.magicnum in b"P3P6P7 332" else 1
          self.tupltypes = [self._types[self.magicnum]]
docs: Read PNM header and initialize instance.