Skip to content
New issue

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

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

Already on GitHub? Sign in 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

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

No branches or pull requests

2 participants