code: def split(self, point=None):
      
      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
docs: 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.