def indexing_ref(index_cmd, db, ref_in_fasta, logger) :
	"""
	index the give reference
	"""
	make_dir_if_not_exist(dirname(db))
	print index_subprogram
	index_cmd += "%s -p %s %s" %(index_subprogram, db, ref_in_fasta)
	run(index_cmd, logger)
	# get mapping program #
	mapper_prog = params["PROGRAM"]

	# get command line default setting #
	default_combo_dict = {}
	for customized_combo, default_setting in params["DEFAULT_SETTING"].iteritems() :
		default_combo_dict[customized_combo] = default_setting

	# get output info #
	out_root_dir = params["OUTPUT_FOLDER"]
	dated_output = int(params["DATED_OUTPUT"])			# this creates timestamped subfolders under the out_root_dir if set True #
	structure = params["STRUCTURE"]
	if dated_output :
		out_root_dir = join(out_root_dir, time_stamper())
	make_dir_if_not_exist(out_root_dir)

	# get indexing info #
	ref_db, ref_fasta, skip, index_subprogram = "", "", -1, ""
	for k, v in params["INDEXING"].iteritems() :
		if k == "DB" :
			ref_db = v
		elif k == "FASTA" :
			ref_fasta = v
		elif k == "SKIP" :
			skip = v
		elif k == "SUBPROGRAM" :
			index_subprogram = mapper_prog + " %s" %(v)
	if not skip :
		check_file_existence(logger, debug, ref_fasta)
		indexing_ref(index_subprogram, ref_db, ref_fasta, logger)