hdng / clonevol

Inferring and visualizing clonal evolution in multi-sample cancer sequencing
GNU General Public License v3.0
141 stars 45 forks source link

questions on the tree #22

Closed jial2 closed 6 years ago

jial2 commented 6 years ago

Hi Ha,

I am running 3 samples on clonevol, they are primary, metastasis and relapse. In the analysis, considering of the copy number aberrations, we used pyclone to do cluster.

I have few questions on the plotted tree.

  1. 4191 sample is the relapse, I don't know why this sample is in the ancestor? Does primary should be in the ancestor?
  2. how to set the large distance between the tree branches? they are so close to each other, sometimes the label is hard to tell.
  3. what does the branch color represent?

one question on clonal mutations. Based on the variant clusters on CCF, cluster 1,2 and 3 in primary shown almost 100% in CCF, but in 4191 (relapse), the mutations in cluster 2 and 3 showed almost 0. I just don't understand if we say the mutations in cluster 1,2,3 are clonal mutations, then CCF in cluster 2 and 3 in 4191 should not be zero or very low percentage. If we say the mutations in cluster 2 and 3 are not clonal mutations, the CCF should be as high as 1 in both clusters in primary. I also found you had the similar results in your paper.

Looking forward to hearing from you.

Thanks, Emily

hdng commented 6 years ago
  1. The tree, which is not shown here, describes the evolutionary relationship between the clones with each clone annotated with samples where it is present. From your clustering you sent via my email, I can tell that the two clones that are emerged in the relapse are the founding clone 1 and subclone 5. Thus, you'll see in the tree, the founding clone (which you called the ancestor) is annotated with the relapse sample plus any other samples where it is found. In this case, clone 1 is present in only the relapse sample suggesting it is missed by the primary sample (due to intra-tumor heterogeneity).

You should also check if Pyclone CCF is barred by 100% that could hamper clonal fraction estimates. See more here: https://github.com/hdng/clonevol/issues/4.

  1. Function plot.clonal.models has many parameters to control how the tree is plotted, particularly relevant ones are:

' @param mtcab.angle: mtcab branch angle in degree

' @param mtcab.branch.width: mtcab branch width in points

' @param mtcab.branch.text.size: mtcab branch text size (cex)

' @param mtcab.node.size=3: mtcab node size

' @param mtcab.node.label.size: mtcab node label text size

' @param mtcab.node.text.size: mtcab node annotation text size

' @param mtcab.event.sep.char: mtcab event separator (used to break down events

' @param mtcab.show.event: show mapped events on branches

Just play with them until you get some good plot.

  1. Each branch represent the evolution path to a clone and its length is scaled by the number of clonal marker mutations of the clone. Its color is matched with the clone node color. The coloring is consistent throughout all types of plots generated by clonevol.
jial2 commented 6 years ago

Thanks for the reply.

I am still confused on the tree.

  1. clone1 in primary should be the founding clone, why clone 1 in the relapse was found clone? In primary, there are three clones with about 100% CCF in the cluster plot, i wonder if this is the reason the program doesn't pick clone 1 from primary as founding clone. Another confusion is that cluster 3 in primary shows 100% CCF, but it get to almost 0% in relapse, for this case, the clone 3 is clonal or subclonal?

  2. I didn't plot the tree using plot.clonal.model because it is so crowd if there are more samples. I used plot.all.trees.clone.as.branch to generate the tree only, but I don't see branch.angle to adjust the angles between branches. Could you please point me to the parameter or function to do this?

Thanks

hdng commented 6 years ago

Sorry for late response.

  1. Given that you have an evolution tree as: 1-->2-->3-->4, and with a single sample from primary tumor that only captured cells in clone 4. The result is that cluster 1,2,3,4 all have CCF of variants = 100%, but CCF of clones 1,2,3 = 0 while CCF of clone 4 = 100%. It is important to distinguish CCF of clones from CCF of variants when interpreting clonal evolution models and tumor heterogeneity. Our paper describes how CCF of clone and CCF of cluster of variants are related, see https://academic.oup.com/annonc/article/28/12/3076/4110375. The tree is annotated with clones where CCF of the clone (not the cluster) is non-zero.

  2. You can try to provide/adjust the following parameters to plot.all.trees.clone.as.branch as:

plot.all.trees.clone.as.branch(..., angle=15,branch.width=1, 
        branch.text.size=0.3, node.size=3, node.label.size=0.75,
        node.text.size=0.5)

or even better, I have created a wrapper for better plotting of the trees but haven't documented in the vignette. Given y is output of infer.clonal.models, you can try:

y = convert.consensus.tree.clone.to.branch(y, branch.scale='sqrt')
y = overlayPrunedTrees(y)
plotTreesBellsCells(y, trees.per.page=3, tree.branch.angle=30,
        show.event=T, show.frame=F, tree.branch.width=0.75,
        out.pdf.file='trees-fishes-cells.pdf')