R/get_detailed_full_tree.R

Defines functions get_detailed_full_tree

	
	get_detailed_full_tree <- function(res_info)
	{
		# attach(res_info)
		for( i in 1:nrow(res_info$segmentss) )
		{
			index_left2adj = which(V(res_info$hi_tree)$left_rescaled == res_info$segmentss_nadj[i,1])
			index_right2adj = which(V(res_info$hi_tree)$right_rescaled == res_info$segmentss_nadj[i,2])
			V(res_info$hi_tree)[index_left2adj]$left_rescaled = res_info$segmentss[i,1]
			V(res_info$hi_tree)[index_right2adj]$right_rescaled = res_info$segmentss[i,2]
			V(res_info$hi_tree)$width_rescaled = V(res_info$hi_tree)$right_rescaled - V(res_info$hi_tree)$left_rescaled + 1
			V(res_info$hi_tree)$name = paste('(',V(res_info$hi_tree)$left_rescaled, ',', V(res_info$hi_tree)$right_rescaled, ')', sep='')
		}
		
		## xenocfraf:
		# res_inner = res_inner[sapply(res_inner, length) > 0]
		## xenocfraf:
		# res_inner = res_inner[sapply(res_inner, length) > 0]
		branches = lapply( res_info$res_inner, get_tree_v0 )
		for( i in 1:length(branches) ) branches[[i]] = update_branch_name(branches[[i]], root_start=res_info$segmentss[i,1])
		trunk = res_info$hi_tree
		
		full_tree = xenocraft( trunk, branches )
		names_tmp = do.call(rbind, strsplit(V(full_tree)$name, ','))
		V(full_tree)$left = substring(names_tmp[,1], 2)
		V(full_tree)$right = substring(names_tmp[,2], 1, nchar(names_tmp[,2])-1)
		if(!is_binary_tree(full_tree)) stop("Trunk + branches do not produce a binary tree")
		
		detailed_full_tree = tree_germination(full_tree)
		# detach(res_info)
		return(detailed_full_tree)
	}
	
	
YuanlongLiu/CALDER documentation built on Sept. 11, 2020, 12:24 a.m.