docs: def _scan(self, seq,threshold='',forw_only='',factor=0.7):
          """
          m._scan(seq,threshold='',forw_only='',factor=0.7) -- Internal tility function for performing sequence scans
          """
          ll = self.ll #Shortcut for Log-likelihood matrix
          if not threshold: threshold = factor * self.maxscore
          
          #print '%5.3f'%(threshold/self.maxscore)
          matches       = []
          endpoints     = []
          scores        = []
          width         = self.width
          width_r       = range(width)
          width_rcr     = range(width-1,-1,-1)
          width_ranges  = zip(width_r,width_rcr)
  
          
          oseq = seq
          seq  = seq.upper()
          seqcomp = seq.translate(revcompTBL)
          for offset in range(len(seq)-self.width+1):    #Check if +/-1 needed
              total_f = 0
              total_r = 0
              for i,ir in width_ranges:
                  pos = offset+i
                  total_f = total_f + ll[i ][    seq[pos]]
                  total_r = total_r + ll[ir][seqcomp[pos]]
  
              if 0 and total_f > 1:
                  for i,ir in width_ranges:
                      print seq[offset+i],'%6.3f'%ll[i ][        seq[offset+i] ],'   ',
                  print '= %7.3f'%total_f
                  
              if 0:
                  print "\t\t%s vs %s: F=%6.2f R=%6.2f %6.2f %4.2f"%(seq[offset:offset+self.width],
                                                                     self.oneletter,total_f,total_r,
                                                                     self.maxscore,
                                                                     max([total_f,total_r])/self.maxscore)
              if total_f > threshold and ((total_f > total_r) or forw_only):
                  endpoints.append( (offset,offset+self.width-1) )
                  scores.append(total_f)
                  matches.append(oseq[offset:offset+self.width])
              elif total_r > threshold:
                  endpoints.append( (offset,offset+self.width-1) )
                  scores.append(total_r)
                  matches.append(oseq[offset:offset+self.width])
          return(matches,endpoints,scores)