Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Wrapping heatmaps in a list for patchwork errors #406

Closed
rbutleriii opened this issue Oct 30, 2024 · 1 comment
Closed

Wrapping heatmaps in a list for patchwork errors #406

rbutleriii opened this issue Oct 30, 2024 · 1 comment

Comments

@rbutleriii
Copy link

Trying to use the GeneOverlap and pheatmap which uses base R graphics, but when I try to wrap it for specific pairs of lists in lapply, I get the following error:

Warning message:
In graphics::par(gp) : calling par(new=TRUE) with no plot

Code (data below):

# plot matching modules across groups (structured order)
comps <- list(
  c("WT-V", "PS19-V"),
  c("WT-V", "PS19-C31"),
  c("WT-V", "WT-C31"),
  c("PS19-C31", "PS19-V")
)
plist <- lapply(comps, function(i) {
  x <- sigs[group == i[1], genes]
  setattr(x, 'names', sigs[group == i[1], module])
  y <- sigs[group == i[2], genes]
  setattr(y, 'names', sigs[group == i[2], module])
  gom <- newGOM(x, y, 950)
  p <- wrap_elements(
    panel = ~pheatmap(
      -log10(getMatrix(gom, name = 'pval')), 
      cluster_rows = FALSE, 
      cluster_cols = FALSE,
      main = paste(i[1], "vs", i[2])
    ),
    clip = FALSE
  )
  return(p)
})
wrap_plots(plist) + plot_layout(nrow = 2)
# plist

If I just call plist I get:

> plist
[[1]]
Error in switch(x[[2]][[1]]$name, C_abline = C_abline(x[[2]]), C_plot_new = C_plot_new(x[[2]]),  : 
  EXPR must be a length 1 vector

However, each pair of gene lists does work individually. Sometimes I get that second error message and then run dev.off() and it will work, but I don't think I can run that in the actual wrap_plots execution

Data:

# stored as sigs
structure(list(group = c("PS19-C31", "PS19-C31", "PS19-C31", 
"PS19-C31", "PS19-C31", "PS19-C31", "PS19-C31", "PS19-C31", "PS19-C31", 
"PS19-V", "PS19-V", "PS19-V", "PS19-V", "PS19-V", "PS19-V", "PS19-V", 
"PS19-V", "PS19-V", "PS19-V", "WT-C31", "WT-C31", "WT-C31", "WT-C31", 
"WT-C31", "WT-C31", "WT-C31", "WT-C31", "WT-C31", "WT-C31", "WT-C31", 
"WT-C31", "WT-C31", "WT-C31", "WT-V", "WT-V", "WT-V", "WT-V", 
"WT-V", "WT-V", "WT-V", "WT-V", "WT-V", "WT-V", "WT-V", "WT-V", 
"WT-V", "WT-V"), module = c("module_10", "module_2", "module_3", 
"module_41", "module_44", "module_46", "module_54", "module_70", 
"module_9", "module_108", "module_14", "module_16", "module_3", 
"module_40", "module_58", "module_6", "module_7", "module_70", 
"module_8", "module_11", "module_15", "module_19", "module_22", 
"module_23", "module_26", "module_30", "module_32", "module_4", 
"module_44", "module_56", "module_68", "module_72", "module_9", 
"module_10", "module_128", "module_13", "module_14", "module_19", 
"module_27", "module_3", "module_33", "module_48", "module_56", 
"module_6", "module_64", "module_68", "module_85"), Theta_cutoff = c(0.1, 
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1), FDR = c(0.639279816091954, 
0.392181075862069, 0.626401887201735, 0.560707839440894, 0.516202736869543, 
0.413515459589144, 0.5707630908211, 0.443871282758621, 0.101959502664298, 
0.593090665595286, 0.264130783807063, 0.514691707149009, 0.390685105943152, 
0.302232751317285, 0.471926311800172, 0.463023807062877, 0.41441452540913, 
0.491755107665805, 0.0199450235029634, 0.701045410270637, 0.327719228161026, 
0.724301214475063, 0.64034863448616, 0.716054423278466, 0.524320787146594, 
0.748848209111645, 0.715567544238239, 0.637597755995315, 0.517924024412798, 
0.398242155230874, 0.446800405044647, 0.595694003448496, 0.806978441045881, 
0.372539911039224, 0.37761655209597, 0.637436581749562, 0.437631756301388, 
0.525088933818574, 0.357290793907535, 0.397439547108775, 0.516472570427281, 
0.465140261490767, 0.304431648470144, 0.520237767893247, 0.468167839331446, 
0.662360695511524, 0.373843860358539), b = c(0.258328370926971, 
0.249718152588597, -0.104380276027753, 0.125876606485132, -0.0470530393705055, 
0.0401113834373348, -0.515466855327764, 0.364785067793587, -0.253019191764062, 
-0.259383773065725, 0.81067989739708, 0.289030099303998, 0.586223153916038, 
0.162509026065133, 0.497290479129155, 0.35746630256536, 0.180609270623366, 
0.425094877363777, -0.0409329208870498, -0.123264818344914, 0.148643259370738, 
-0.426668212118895, -0.449027390292671, -0.309171271444951, -0.124008458212722, 
-0.436734705766893, -0.47672641890665, -0.413461507789112, 0.152491920110388, 
0.158962253649126, -0.115548517451903, -0.300457036135542, -0.579980867029743, 
0.341105921320543, 0.188619983257207, -0.19270261500759, 0.493674683435546, 
0.00524344859024761, 0.42097774769656, 0.899359859048597, 0.666351507706168, 
0.135782042289118, 0.469321222584096, 0.393553804264075, 0.610228940111656, 
-0.0600274108429954, 0.82101936134406), pval = c(0.999998097115652, 
0.996176758115058, 0.000744872245723536, 0.46397787424716, 0.259654347076794, 
0.835513852218532, 3.13103309046409e-12, 0.999912536881349, 0.000180758157800002, 
0.00504606864964028, 1, 0.999920206090729, 0.999999996875643, 
0.980229794969405, 0.999999999922078, 0.999983010191118, 0.881053612624627, 
0.999986698431506, 0.239285445614538, 0.00518009950751722, 0.97111883659788, 
2.18839836773857e-05, 3.62312123152213e-08, 0.00220010253262139, 
0.160554072250999, 1.02625770566021e-10, 2.078182333036e-10, 
1.30427823401309e-06, 0.934609792409357, 0.99887377016919, 0.0553178555683443, 
0.00024216186181563, 4.23938742401589e-09, 0.999982654270892, 
0.990521488553011, 0.00511089824634227, 0.999999999907975, 0.931907635592001, 
0.999999999998348, 1, 1, 0.925654634255276, 0.999999999997597, 
0.999999999900969, 0.999999999999838, 0.510060799588411, 1), 
    pval_adj = c(0.999998097115652, 0.999998097115652, 0.00223461673717061, 
    0.835160173644888, 0.584222280922787, 0.999998097115652, 
    2.81792978141768e-11, 0.999998097115652, 0.000813411710100011, 
    0.0504606864964028, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.00805793256724901, 
    0.99887377016919, 5.10626285805666e-05, 1.26809243103275e-07, 
    0.00385017943208743, 0.204341546501271, 1.4367607879243e-09, 
    1.4547276331252e-09, 3.65197905523666e-06, 0.99887377016919, 
    0.99887377016919, 0.077444997795682, 0.00048432372363126, 
    1.97838079787408e-08, 1, 1, 0.0715525754487918, 1, 1, 1, 
    1, 1, 1, 1, 1, 1, 1, 1), genes = list(c("Clasp2", "Dnm3", 
    "Gnas", "Rab1a", "Ube4b"), c("Anapc16", "Epha6", "Grb10", 
    "Map2k6", "Ttr"), c("Adcy1", "Atp1b1", "Atp2a2", "Cacnb4", 
    "Calm1", "Chchd10", "Cyfip2", "Dlgap2", "Dnm1", "Gabrb3", 
    "Gls", "Inpp5a", "Kalrn", "Kcnq3", "Mapt", "Mdh1", "Nrgn", 
    "Nrsn1", "Rtn1", "Sncb", "Stmn3", "Stxbp1", "Syp", "Wasf1", 
    "Ywhag"), c("Cacna1c", "Cmip", "Htt", "Lrrk2", "Rapgef2"), 
        c("Cox6c", "Dync1li2", "Pcp4", "Psma1", "Rtn4", "Sptbn1", 
        "Tmsb10"), c("Aldoa", "Arpp21", "Atp2b1", "Atp6v1a", 
        "Bex1/2", "Cacna2d1", "Calm2", "Cck", "Cckbr", "Clstn1", 
        "Dlg4", "Dynll2", "Egr1", "Eif4a2", "Gap43", "Gpm6a", 
        "Hsp90aa1", "Lancl1", "Map1b", "Mapk1", "Mef2c", "Meg3", 
        "Nap1l5", "Ndrg4", "Nlk", "Ntrk2", "Olfm1", "Pak1", "Pfkp", 
        "Ppp3ca", "Ptprs", "Rtn3", "Sh3gl2", "Slc17a7", "Snap25", 
        "Snca", "Snrpn", "Tspan7", "Uqcr10", "Ywhaz", "Zwint"
        ), c("Adrb2", "C1qa", "C1qc", "Cx3cr1", "Hexb", "P2ry12", 
        "Pde3b", "Pros1", "Sall1", "Serinc3", "Tgfbr1", "Tmem119"
        ), c("Atp2b4", "Cnksr2", "Fbxw7", "Ndufa4", "Pcsk1n", 
        "Pfkm"), c("Apod", "Cryab", "Fa2h", "Gjb1", "Gpr37", 
        "Mag", "Mobp", "Mog", "Ndrg1", "Pde8a", "Pllp", "Plp1", 
        "Slc12a2"), c("Cryab", "Mag", "Mobp", "Mog", "Ndrg1", 
        "Pllp", "Plp1", "Ptgds", "Slc44a1"), c("Dgkg", "Dync1li2", 
        "Frs2", "Gnai1", "Ppfia2", "Ube2k"), c("Gad2", "Npy", 
        "Reln", "Slc32a1", "Sst"), c("Cacna1a", "Cacna2d1", "Dync1h1", 
        "Gls", "Gria4", "Grin1", "Gsk3b", "Gucy1a2", "Lrrc7", 
        "Meg3", "Nsg1", "Prnp", "Trip12"), c("Apoe", "Atp1a2", 
        "Gja1", "Gpr37l1", "Mfge8", "Plpp3", "Slc1a3"), c("6330403K07Rik", 
        "Aldoa", "Atp1b1", "Atp2b2", "Cacnb4", "Calm1", "Camk2b", 
        "Cck", "Ctxn1", "Cyfip2", "Dnm1", "Dynll2", "Egr1", "Gap43", 
        "Gnao1", "Homer1", "Hsp90ab1", "Itpr1", "Kalrn", "Mapt", 
        "Mdh1", "Mef2c", "Mllt11", "Myl6", "Ndrg4", "Nrgn", "Prkce", 
        "Psmd14", "Rab6a", "Rab7", "Rbfox3", "Rtn3", "Scg5", 
        "Slc17a7", "Snap25", "Snrpn", "Sptan1", "Stmn2", "Stxbp1", 
        "Syp", "Tcf4", "Thy1", "Ttc3", "Ywhaq"), c("Bin1", "C1qa", 
        "C1qb", "Cfh", "Cst3", "Ctsd", "Ctss", "Cx3cr1", "Epb41l2", 
        "Grn", "Mertk", "P2ry12", "Sall1", "Sparc", "Trem2"), 
        c("Abi1", "Atg4c", "Lgr5", "Npy1r", "Ppp1r1b", "Prkar2b"
        ), c("Akt3", "Ldha", "Map2k4", "Ndufa10", "Ndufs1", "Pcp4", 
        "Tspan5"), c("Agtr1b", "Fa2h", "Ror1", "Shtn1", "Slc10a6"
        ), c("Adam22", "Adgrl3", "Cckbr", "Chrm3", "Grin2a", 
        "Pcdh15", "Prickle1"), c("Bcas1", "Dbi", "Mbp", "Mobp", 
        "Sema6d"), c("App", "Atp1b1", "Cacnb4", "Chl1", "Clstn1", 
        "Gpm6a", "Hsp90aa1", "Nrcam", "Nsg1", "Olfm1", "Pcp4", 
        "Pde1a", "Prnp", "Rtn1", "Slc17a7", "Sv2b", "Syt1", "Syt11", 
        "Thy1", "Tspan5", "Wasf1", "Ywhaz"), c("Esam", "Id1", 
        "Lsr", "Pecam1", "Slc7a5"), c("Brwd1", "Dgkg", "Epha6", 
        "Rora", "Slc18a2"), c("Aldoc", "Atp1a2", "Clu", "Gstm1", 
        "Plpp3", "Ptn", "Slc1a2", "Slc1a3", "Slc6a11", "Sparcl1"
        ), c("C1qa", "C1qb", "C1qc", "Cst3", "Ctsd", "Mertk", 
        "P2ry12", "Sall1", "Tmem119"), c("Aldoa", "Arpp21", "Cacna2d1", 
        "Calm1", "Calm3", "Camk2a", "Dgki", "Fzd3", "Gnao1", 
        "Gria4", "Itpr1", "Lrrc7", "Map1b", "Ntrk3", "Pcsk1n", 
        "Rims1", "Ryr2", "Sptbn1"), c("Bex1/2", "Cacng3", "Camk2b", 
        "Camk2g", "Camk4", "Cck", "Chchd10", "Cox8a", "Ctxn1", 
        "Dnm1", "Egr1", "Gap43", "Gria2", "Grin2b", "Kalrn", 
        "Mdh1", "Meg3", "Ndrg4", "Nrgn", "Rab6a", "Rbfox3", "Sh3gl2", 
        "Snap25", "Snca", "Snrpn", "Stxbp1", "Unc5c", "Zwint"
        ), c("Apod", "Cryab", "Gjb1", "Gpr37", "Jam3", "Mag", 
        "Mog", "Myrf", "Ndrg1", "Plp1", "Ptgds", "Ugt8a"), c("Clec7a", 
        "Cst7", "Itgax", "Samhd1", "Spp1"), c("Adrb2", "H2-Aa", 
        "Kat2b", "Mmp14", "Pdgfra"), c("Adcy1", "Camk2n1", "Ckb", 
        "Cox4i1", "Cox6c", "Ndrg2", "Nrsn1"), c("Ctnna2", "Ednra", 
        "Il1rapl2", "Itga2", "Slc4a8"), c("Gnai1", "Gria1", "Gria2", 
        "Grin1", "Lrrtm3", "Meg3", "Ntm", "Sncb", "Stmn3"), c("C1qa", 
        "C1qc", "Cd9", "Csf1r", "Csf3r", "Ctsd", "Ctss", "Epb41l2", 
        "Grn", "Mertk", "P2ry12", "Serinc3", "Sparc", "Tmem119", 
        "Trem2", "Tyrobp"), c("Gab2", "Malat1", "Mef2a", "P2rx7", 
        "Pde3b", "Taok3"), c("Aldoc", "Apoe", "Atp1a2", "Clu", 
        "Gja1", "Gpr37l1", "Mfge8", "Plpp3"), c("Avp", "Cd74", 
        "Crp", "Gpnmb", "Ifng", "Spp1"), c("Adcy1", "App", "Atp2b2", 
        "Camk2a", "Camk2n1", "Cox8a", "Dab1", "Dlg4", "Dynll2", 
        "Gnao1", "Mapt", "Ndrg4", "Nrgn", "Ntrk2", "Ntrk3", "Ppp2r2c", 
        "Snap25", "Snca", "Snrpn", "Syt11", "Ttc3"), c("Cox7c", 
        "Htr2c", "Maoa", "Tcf4", "Uqcr10"), c("Daam2", "Fth1", 
        "Mbp", "Mobp", "Wscd1"), c("Adam22", "Atp1b1", "Calm1", 
        "Chrm1", "Clstn1", "Efna5", "Gabrb3", "Gpm6a", "Gpr158", 
        "Kalrn", "Mapk10", "Nckap1", "Nrcam", "Olfm1", "Pcp4", 
        "Pde1a", "Rtn1", "Slc17a7", "Sv2a", "Syp", "Thy1"), c("6330403K07Rik", 
        "Akt3", "Dock3", "Hsp90aa1", "Nap1l5", "Sh3gl2"), c("Bche", 
        "Crh", "Tiam1", "Trim2", "Ttr"), c("Aldoa", "Atp2b1", 
        "Atp2b4", "Cacna1e", "Cacna2d1", "Cck", "Cntn1", "Ctxn1", 
        "Dnm1", "Grin2b", "Prnp", "Syn2", "Tnik", "Zwint"), c("Apod", 
        "Aspa", "Cryab", "Fa2h", "Gpr37", "Mag", "Ndrg1", "Pde8a", 
        "Pllp", "Plp1", "Ptgds", "Ugt8a"), c("Dgki", "Mt3", "Pcsk1n", 
        "Sptbn1", "Tspan5"))), class = c("data.table", "data.frame"
), row.names = c(NA, -47L), sorted = c("group", 
"module"))
@Yunuuuu
Copy link
Contributor

Yunuuuu commented Nov 3, 2024

pheatmap use grid internally, you can extract the gtable by

pheatmap(
      -log10(getMatrix(gom, name = 'pval')), 
      cluster_rows = FALSE, 
      cluster_cols = FALSE,
      main = paste(i[1], "vs", i[2])
    )$gtable

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants