Ah, Kevin beat me to it! :)
Also, this question was cross-posted: https://stackoverflow.com/questions/60557589/question-oncoprint-define-graphic-function-error-in-r
Hi, Im not sure how to overcome this error regarding the oncoprint graphic function error.
Error: You should define graphic function for: missense_variantmissense_variant, missense_variantmissense_variantmissense_variant, stop_gainedstop_gained, missense_variantsplice_region_variant, missense_variantsplice_region_variantmissense_variant, missense_variantframeshift_variant, splice_region_variantframeshift_variant
The code is below:
col <- c("stop_gained" = "blue", "missense_variant" = "red", "inframe_deletion" = "#008000", "splice_region_variant" = "aquamarine", "frameshift_variant" = "burlywood4", "splice_acceptor_variant" = "coral",
"NA" = "gray90")
alter_fun <- list(
background = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"),
gp = gpar(fill = "#CCCCCC", col = NA))
},
# big blue
stop_gained = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"),
gp = gpar(fill = col["stop gained"], col = NA))
},
# bug red
missense_variant = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"),
gp = gpar(fill = col["missense variant"], col = NA))
},
# small green
inframe_deletion = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h*0.33,
gp = gpar(fill = col["inframe deletion"], col = NA))
}
,
# aquamarine
splice_region_variant = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h*0.33,
gp = gpar(fill = col["splice region variant"], col = NA))
}
,
# burlywood4
frameshift_variant = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h*0.33,
gp = gpar(fill = col["frameshift variant"], col = NA))
}
,
# coral
splice_acceptor_variant = function(x, y, w, h) {
grid.rect(x, y, w-unit(0.5, "mm"), h*0.33,
gp = gpar(fill = col["splice acceptor variant"], col = NA))
}
)
```
```{r}
column_title = "OncoPrint for P00151 Project"
heatmap_legend_param = list(title = "Alterations", at = c("stop_gained", "missense_variant", "inframe_deletion", "splice_region_variant", "frameshift_variant", "splice_acceptor_variant"),
labels = c("Stop Gained", "Missense Variant", "Inframe Deletion", "Splice Region Variant", "Frameshift Variant", "Splice Acceptor Variant"))
oncoPrint(data2,
alter_fun = alter_fun, col = col,
column_title = column_title, heatmap_legend_param = heatmap_legend_param)
Please assist!
I've never played around with oncoPrint in R but here is an idea (based off what I can infer from the error message):
You actually need to define the colors for missense_variantmissense_variant, missense_variantmissense_variantmissense_variant, stop_gainedstop_gained, (and all the other stuff mentioned in the error message) the same way you have for everything else (stop_gained, missense_variant, inframe_deletion, etc.). If you don't, you'll need to remove those names mentioned in your error message from your dataframe: data2.
Why do names like missense_variantmissense_variantmissense_variant appear? I speculate that it's because of one-to-many mapping: The location of a variant is mapping to multiple transcripts. In this case, the location is mapping to three transcripts and for that particular variant, it's a missense variant in all three transcripts.
In the case of missense_variantframeshift_variant, perhaps the location maps to two transcripts, and that particular variant is missense in one transcript but frameshift in the other transcript.
That's my best guess based on the information provided. Hope this helps!
It implies that you have mutation / variant labels such as missense_variantmissense_variant, missense_variantmissense_variantmissense_variant, stop_gainedstop_gained, missense_variantsplice_region_variant, et cetera, in your data; so, you need to define these in the alter_fun
Perhaps you should explore why these labels exist in your input data.
Kevin
Ah, Kevin beat me to it! :)
Also, this question was cross-posted: https://stackoverflow.com/questions/60557589/question-oncoprint-define-graphic-function-error-in-r
Yes, sorry, I'm on a Biostars binge in the past couple of days. Thanks for alerting to the cross-post.
Log in to answer this question.
ngcatung0, when you post your question on multiple web forums, can you (at the very least) alert the users of both [forums] of the locations where you have posted? This is to allow us not to duplicate efforts.