	## Yuanlong LIU, 09-08-2018

	generate_compartments_bed <- function(input_mat, p_thresh, out_file_name, chr, window.sizes=3, stat_window_size=NULL, bin_size)
	{	

		input_mat_extended = data.frame(chr=paste0('chr', chr), pos_start=0:(nrow(input_mat)-1), pos_end=1:nrow(input_mat), mat=input_mat)

		res_input_mat = TopDom_v2(input_mat_extended, window.size=NULL, NULL, T, p_thresh=p_thresh, window.sizes=window.sizes, stat_window_size=stat_window_size, domain_size_min=NULL)
		cat('[', as.character(chr),'] Computing compartments\n')
		# return(res_input_mat)
		to_id = as.numeric(rownames(input_mat)[res_input_mat$domain$to.id])
		from_id = as.numeric(rownames(input_mat)[res_input_mat$domain$from.id])
		
		start_poses = (from_id-1)*bin_size + 1
		# end_poses = start_poses + n2one*bin_size
		end_poses = start_poses + bin_size
		
		input_mat_compartments_bed = data.frame(paste0('chr', chr), as.character(start_poses), as.character(end_poses) )
		if(!is.null(out_file_name)) write.table( input_mat_compartments_bed, file=out_file_name, quote=FALSE, row.names=FALSE, col.names=FALSE, sep=' ' )
		return( res_input_mat )
	}
	