docs: def maskRegion(self, region):
      """
        Replace nucleotides in this sequence in the regions given by Ns
  
        :param region: any object with .start and .end attributes. Co-ords are
                       zero based and inclusive of both end points. Any other
                       attributes (e.g. chrom.) are ignored.
        :raise SequenceError: if region specifies nucleotides not present in
                              this sequence
      """
      if region.start < 0 or region.end < 0 or \
         region.start > len(self) or region.end > len(self):
        raise SequenceError("cannot mask region " + str(region.start) + " to " +
                            str(region.end) + " in " + self.name + ". " +
                            "Region specifies nucleotides not present in " +
                            "this read. Valid range would have been 0 -- " +
                            str(len(self)))
  
      if self.mutableString:
        for i in range(region.start, region.end + 1):
          self.sequenceData[i] = 'N'
      else:
        self.sequenceData = "".join([self.sequenceData[:region.start],
                                    ("N" * (region.end - region.start + 1)),
                                    self.sequenceData[region.end + 1:]])