docs: def get_sequence(self, chrom, start, end, strand='+', indexing=(-1, 0)):
          """
          chromosome is entered relative to the file it was built with, so it can be 'chr11' or '11',
          start/end are coordinates, which default to python style [0,1) internally. So positions should be
          entered with (1,1) indexing. This can be changed with the indexing keyword.
          The default is for everything to be relative to the positive strand
          """
          try:
              divisor = int(self.sequence_index[chrom][2])
          except KeyError:
              self.open_fasta_index()
              try:
                  divisor = int(self.sequence_index[chrom][2])
              except KeyError:
                  sys.stderr.write("%s cannot be found within the fasta index file.\n" % chrom)
                  return ""
          start+=indexing[0]
          end+=indexing[1]
          #is it a valid position?
          if ( start < 0 or end > int(self.sequence_index[chrom][0] )):
              raise ValueError("The range %d-%d is invalid. Valid range for this feature is 1-%d." % (start-indexing[0], end-indexing[1], 
                                                                                                       int(self.sequence_index[chrom][0])))
          #go to start of chromosome
          seekpos = int(self.sequence_index[chrom][1])
          #find how many newlines we have
          seekpos += start+start/divisor
          slen = end-start
          endpos = int(slen + (slen/divisor) + 1) #a hack of sorts but it works and is easy
          self.fasta_file.seek(seekpos, 0)
          output = self.fasta_file.read(endpos)
          output = output.replace('\n', '')
          out = output[:slen]
          if strand == '+' or strand == 1:
              return out
          if strand == '-' or strand == -1:
              return _reverse_complement(out)