<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def split(self, point=None):
 """ Split this read into two halves. Original sequence is left unaltered. The name of the resultant reads will have '.1' and '.2' appended to the name from the original read. :param point: the point (index, starting from 0) at which to split this read -- everything before this index will be placed into the first sequence, and everything at or after this index will be placed in the second resultant sequence. If None (the default), then we split in the middle; if the original size is not a multiple of 2, the extra nucleotide is placed into the second resultant sequence. Must be >= 0 and <= length of sequence. :return: two NGSRead objects which correspond to the split of this sequence. """

    if point is None:
      point = len(self) / 2
    if point < 0:
      raise NGSReadError("Cannot split read at index less than 0 " +
                         "(index provided: " + str(point) + ")")
    if point > len(self):
      raise NGSReadError("Cannot split read at index greater than read " +
                         "length (index provided: " + str(point) + ")")

    r1 = NGSRead(self.sequenceData[:point], self.name + ".1",
                 self.seq_qual[:point])
    r2 = NGSRead(self.sequenceData[point:], self.name + ".2",
                 self.seq_qual[point:])
    return r1, r2