docs: def make_degenerate_regex( motif_seq, molecule='dna' ):
  	""" Degenerate sequence -> regex
  	Example: NNYCGAARN -> [ACGT]{2}[CT]CGA{2}[AG][ACGT]
  	"""
  	
  	if not isinstance( motif_seq, six.string_types ):
  		raise TypeError( "motif_seq must be a string!" )
  		
  	if molecule == 'dna':
  		degenerate_code = { "A":"A", "B":"[CGT]", "C":"C", "D":"[AGT]", "G":"G", "H":"[ACT]", "K":"[GT]", "M":"[AC]", "N":"[ACGT]", "R":"[AG]", "S":"[GC]", "T":"T", "V":"[ACG]", "W":"[AT]", "Y":"[CT]" }
  	elif molecule == 'rna':
  		degenerate_code = { "A":"A", "B":"[CGU]", "C":"C", "D":"[AGU]", "G":"G", "H":"[ACU]", "K":"[GU]", "M":"[AC]", "N":"[ACGU]", "R":"[AG]", "S":"[GC]", "U":"U", "V":"[ACG]", "W":"[AU]", "Y":"[CU]" }
  	else:
  		raise ValueError( "make_degenerate_regex requires molecule to be dna or rna" )
  	
  	regex_string = ''
  	
  	idx = 0
  	
  	while idx < len( motif_seq ):
  		curr = motif_seq[idx]
  		
  		count = 1
  		
  		for next_idx in range( idx+1, len( motif_seq ) ):
  			next = motif_seq[next_idx]
  			
  			if next == curr:
  				count += 1
  			else:
  				break
  		
  		regex_string += degenerate_code[curr]
  		
  		if count > 1:
  			idx = idx + count - 1
  			regex_string += "{%s}" % ( count )
  		
  		idx += 1
  	
  	return regex_string