@@ -86,7 +86,7 @@ plot_cna_segments <- function(chrom_coordinates = NULL,
8686
8787
8888 # # Identify segments that involve oncogene gain or
89- # # tumor suppressor loss
89+ # # tumor suppressor loss (homozygous or heterozygous)
9090 onc_gain_tsg_loss <- cna_gene | >
9191 dplyr :: select(
9292 c(" CHROM" , " SEGMENT_START" , " SEGMENT_END" ,
@@ -97,9 +97,11 @@ plot_cna_segments <- function(chrom_coordinates = NULL,
9797 (.data $ ONCOGENE == TRUE &
9898 .data $ VARIANT_CLASS == " gain" ) |
9999 (.data $ TUMOR_SUPPRESSOR == TRUE &
100- .data $ VARIANT_CLASS == " homdel" ))
100+ (.data $ VARIANT_CLASS == " homdel" |
101+ .data $ VARIANT_CLASS == " hetdel" )))
101102
102103 tsg_loss <- data.frame ()
104+ tsg_het_loss <- data.frame ()
103105 onc_gain <- data.frame ()
104106
105107 # # If there are oncogene gains or tumor suppressor losses,
@@ -146,6 +148,27 @@ plot_cna_segments <- function(chrom_coordinates = NULL,
146148 .groups = " drop" )
147149 }
148150
151+ tsg_het_loss <- onc_gain_tsg_loss | >
152+ dplyr :: filter(
153+ .data $ TUMOR_SUPPRESSOR == TRUE &
154+ .data $ VARIANT_CLASS == " hetdel" )
155+
156+ # # For now, if multiple TSGs are involved in a lost segment, we will only
157+ # # show the top three in the plot (hover)
158+ if (NROW(tsg_het_loss ) > 0 ){
159+ tsg_het_loss <- tsg_het_loss | >
160+ dplyr :: arrange(
161+ dplyr :: desc(.data $ TUMOR_SUPPRESSOR_RANK )) | >
162+ dplyr :: group_by(
163+ .data $ CHROM ,
164+ .data $ SEGMENT_START ,
165+ .data $ SEGMENT_END ) | >
166+ dplyr :: summarise(
167+ TSG_HET_LOSS = paste(
168+ utils :: head(.data $ SYMBOL , 3 ), collapse = " , " ),
169+ .groups = " drop" )
170+ }
171+
149172 }
150173
151174 # # Prepare data for plotting
@@ -199,13 +222,29 @@ plot_cna_segments <- function(chrom_coordinates = NULL,
199222 ! is.na(.data $ TSG_LOSS ),
200223 paste0(
201224 .data $ SegmentInfo ,
202- " <br> - Tumor suppressor loss: " ,
225+ " <br> - Tumor suppressor loss (homozygous del) : " ,
203226 .data $ TSG_LOSS ),
204227 .data $ SegmentInfo ))
205228 }else {
206229 cna_segments_global $ TSG_LOSS <- as.character(NA )
207230 }
208231
232+ if (NROW(tsg_het_loss ) > 0 ){
233+ cna_segments_global <- cna_segments_global | >
234+ dplyr :: left_join(
235+ tsg_het_loss ,
236+ by = c(" CHROM" , " SEGMENT_START" , " SEGMENT_END" )
237+ ) | >
238+ dplyr :: mutate(SegmentInfo = dplyr :: if_else(
239+ ! is.na(.data $ TSG_HET_LOSS ),
240+ paste0(.data $ SegmentInfo ,
241+ " <br> - Tumor suppressor loss (heterozygous del): " ,
242+ .data $ TSG_HET_LOSS ),
243+ .data $ SegmentInfo ))
244+ }else {
245+ cna_segments_global $ TSG_HET_LOSS <- as.character(NA )
246+ }
247+
209248 if (NROW(onc_gain ) > 0 ){
210249 cna_segments_global <- cna_segments_global | >
211250 dplyr :: left_join(
@@ -379,10 +418,22 @@ get_oncogenic_cna_events <- function(cna_df_display = NULL){
379418 )
380419 )
381420
421+ tsgene_hetloss_variants <-
422+ dplyr :: filter(
423+ cna_df_display ,
424+ .data $ TUMOR_SUPPRESSOR == TRUE &
425+ .data $ VARIANT_CLASS == " hetdel" ) | >
426+ dplyr :: select(
427+ dplyr :: any_of(
428+ pcgrr :: dt_display $ cna_other_oncogenic
429+ )
430+ )
431+
382432 cna_oncogenic_events <-
383433 dplyr :: bind_rows(
384434 oncogene_gain_variants ,
385- tsgene_loss_variants
435+ tsgene_loss_variants ,
436+ tsgene_hetloss_variants
386437 ) | >
387438 dplyr :: select(
388439 dplyr :: any_of(
@@ -394,6 +445,12 @@ get_oncogenic_cna_events <- function(cna_df_display = NULL){
394445 dplyr :: desc(.data $ GLOBAL_ASSOC_RANK ),
395446 )
396447
448+ if (" SEGMENT_LENGTH_MB" %in% colnames(cna_oncogenic_events )){
449+ cna_oncogenic_events <- cna_oncogenic_events | >
450+ dplyr :: mutate(SEGMENT_LENGTH_MB = round(
451+ .data $ SEGMENT_LENGTH_MB , digits = 2 ))
452+ }
453+
397454 return (cna_oncogenic_events )
398455
399456
0 commit comments