federicomarini / pcaExplorer

pcaExplorer - Interactive exploration of Principal Components of Samples and Genes in RNA-seq data
https://federicomarini.github.io/pcaExplorer/
Other
55 stars 17 forks source link

-adobe-helvetica fonts issue #3

Closed rlanos closed 6 years ago

rlanos commented 6 years ago

Hi there,

I Wanted to get a glance at your work and after a large amount of time to install all the dependencies needed on my Ubuntu 16.04 to make it work (with the right R install) I'm still unable to see something !

When I look at the result server, every graphic is replace by impossible de charger la police X11 -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, de face 1 et de taille 9 Which means it failed to load the font X11 "-adobe-helvetica-%s-%s---%d-------* " . I went on Google to find the Helvetica font but I was not able to find it. Is there a way to change the font being used ?

Best regards, Raphaël

federicomarini commented 6 years ago

Hi Raphaël,

thank you for the interest! As for your issue, this does not seem to be related to the package itself.

What package were you able to install, and which not? In other words, can you call

library("pcaExplorer")

in R?

It would anyway sound like an Ubuntu thing. A quick search with the error message as keyword got me to these:

Since I did not use any custom font/else with the plotting, it sounds new to me. Would you please check if the reply I linked could solve it? Federico

rlanos commented 6 years ago

Like you said it's not "directly" related to your package. What I wanted to say is that I had to install R 3.4 and several system libraries manually on my Ubuntu to be able to satisfy all R dependencies to install pcaExplorer (XML, pandoc, X11, ...). It sounds to me that most of the people wont go that far to install your software. It could be really helpful to have more help on this part in the documentation, even some advertisement/tips would be great. I agree it's not the package fault but the package itself is unusable without the system part.

That makes me wonder on which system you are working.

For the error part, I installed a lot of fonts/xfonts packages (even the ones pointed out in the forum post) to see whether it would do something but it did not. It seems helvetica is a font that may not exist on Ubuntu... It would be interesting to see which dependency of yours is using this font and if you can do something to it. Given the error message, something is enforcing the font to use and it should not.

Raphaël

rlanos commented 6 years ago

Here is the stack traces in case it may be of interest for you :

Warning: Error in grid.Call: impossible de charger la police X11 -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, de face 1 et de taille 9
Stack trace (innermost first):
    122: grid.Call
    121: widthDetails.text
    120: widthDetails
    119: <Anonymous>
    118: grid.Call
    117: convertUnit
    116: convertWidth
    115: FUN
    114: vapply
    113: width_cm
    112: guide_gengrob.legend
    111: FUN
    110: lapply
    109: guides_gengrob
    108: build_guides
    107: ggplot2::ggplot_gtable
    106: print.ggplot
    105: print
     94: <reactive:plotObj>
     83: plotObj
     82: origRenderFunc
     81: output$samples_pca
      4: <Anonymous>
      3: do.call
      2: print.shiny.appobj
      1: <Promise>
Warning: Error in grid.Call: impossible de charger la police X11 -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, de face 1 et de taille 9
Stack trace (innermost first):
    136: grid.Call
    135: widthDetails.text
    134: widthDetails
    133: <Anonymous>
    132: grid.Call.graphics
    131: push.vp.viewport
    130: push.vp
    129: push.vp.vpTree
    128: FUN
    127: lapply
    126: pushViewport
    125: pushgrobvp.viewport
    124: pushgrobvp
    123: pushvpgp
    122: preDraw.gTree
    121: <Anonymous>
    120: grid.Call.graphics
    119: push.vp.viewport
    118: FUN
    117: lapply
    116: pushViewport
    115: pushgrobvp.viewport
    114: pushgrobvp
    113: pushvpgp
    112: preDraw.gTree
    111: preDraw
    110: drawGTree
    109: recordGraphics
    108: grid.draw.gTree
    107: grid::grid.draw
    106: print.ggplot
    105: print
     94: <reactive:plotObj>
     83: plotObj
     82: origRenderFunc
     81: output$samples_scree
      4: <Anonymous>
      3: do.call
      2: print.shiny.appobj
      1: <Promise>
Warning: Error in grid.Call: impossible de charger la police X11 -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, de face 1 et de taille 9
Stack trace (innermost first):
    136: grid.Call
    135: widthDetails.text
    134: widthDetails
    133: <Anonymous>
    132: grid.Call.graphics
    131: push.vp.viewport
    130: push.vp
    129: push.vp.vpTree
    128: FUN
    127: lapply
    126: pushViewport
    125: pushgrobvp.viewport
    124: pushgrobvp
    123: pushvpgp
    122: preDraw.gTree
    121: <Anonymous>
    120: grid.Call.graphics
    119: push.vp.viewport
    118: FUN
    117: lapply
    116: pushViewport
    115: pushgrobvp.viewport
    114: pushgrobvp
    113: pushvpgp
    112: preDraw.gTree
    111: preDraw
    110: drawGTree
    109: recordGraphics
    108: grid.draw.gTree
    107: grid::grid.draw
    106: print.ggplot
    105: print
     94: <reactive:plotObj>
     83: plotObj
     82: origRenderFunc
     81: output$reads_barplot
      4: <Anonymous>
      3: do.call
      2: print.shiny.appobj
      1: <Promise>
Warning: Error in grid.Call: impossible de charger la police X11 -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, de face 1 et de taille 9
Stack trace (innermost first):
    85: <Anonymous>
    84: stop
    83: plotObj
    82: origRenderFunc
    81: output$reads_barplot
     4: <Anonymous>
     3: do.call
     2: print.shiny.appobj
     1: <Promise>
Warning: Error in grid.Call: impossible de charger la police X11 -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, de face 1 et de taille 9
Stack trace (innermost first):
    85: <Anonymous>
    84: stop
    83: plotObj
    82: origRenderFunc
    81: output$reads_barplot
     4: <Anonymous>
     3: do.call
     2: print.shiny.appobj
     1: <Promise>
federicomarini commented 6 years ago

Like you said it's not "directly" related to your package. What I wanted to say is that I had to install R 3.4 and several system libraries manually on my Ubuntu to be able to satisfy all R dependencies to install pcaExplorer (XML, pandoc, X11, ...). It sounds to me that most of the people wont go that far to install your software.

Well I hope it is not the case. I am happy that many already do use it, and the many dependencies you had to install are mostly due to a fresh installation of R. Many of the packages are indeed already in common use when using Bioconductor.

For an alternative way of installing, have you thought of bioconda? You can find the package also there: https://anaconda.org/bioconda/bioconductor-pcaexplorer

It could be really helpful to have more help on this part in the documentation, even some advertisement/tips would be great

As I said, the error raised is new to me, so I could not put this in the documentation, especially if I was not able to reproduce it. The tips and tricks for installing some packages on Ubuntu are often the top results just by googling the related error message

That makes me wonder on which system you are working.

Devel machines: iMac + macbook pro, plus some testing on a local windows machine, and on top of it, continuous integration via TravisCI (see the badge in the Readme.md)

For the error part, I installed a lot of fonts/xfonts packages (even the ones pointed out in the forum post) to see whether it would do something but it did not. It seems helvetica is a font that may not exist on Ubuntu... It would be interesting to see which dependency of yours is using this font and if you can do something to it. Given the error message, something is enforcing the font to use and it should not.

Checking the stack traces, it looks like it is related to Grid/ggplot2. Maybe worth seeing if that introduced relevant changes? Or also, as additional test, can you do simple plots via ggplot2?

rlanos commented 6 years ago

Thanks for guiding me to focus my searches on ggplot. With the ggplot keyword, I came across this : https://bioinformaticsngs.wordpress.com/2016/04/18/r-x11-font-adobe-helvetica-s-s-d-face-1-at-size-12-could-not-be-loaded/

So if you add

# default X11() setting
setHook(packageEvent("grDevices", "onLoad"),
    function(...) grDevices::X11.options(width = 8, height = 8, xpos = 0, pointsize = 10, type = "cairo"))

to your ~/.Rprofile , it works just fine I never had this problem before, since I'm using cairo .

For the rest, I hope you are not taking offense of what I'm saying, I'm not criticizing but giving ideas. Working in the diagnostic field of Human genetics, I'm a bit severe about installation procedures... I'm not saying you should complete the diagnostic standards (hell, no) but it took me a bunch of time to install pcaExplorer properly and I would have liked to be warned on this subject (the time it may take). An advertiser like "pcaExplorer is using a lot of R dependencies, If you're going to do a fresh R install It might take some of your time to install the needed system libraries to make it working" sounds good to me. This way the user is warned and by the way you also say that you are not responsible for the problems occurring with this part.

Raphaël

federicomarini commented 6 years ago

Very good you found a solution! Probably it is new to me since I normally rely on X11.

For the rest, I hope you are not taking offense of what I'm saying, I'm not criticizing but giving ideas.

No offense taken 😃

An advertiser like "pcaExplorer is using a lot of R dependencies, If you're going to do a fresh R install It might take some of your time to install the needed system libraries to make it working" sounds good to me.

Sounds like a nice sentence to put in the README.md. By the way, I am sure someone also used the "server edition" of pcaExplorer (https://github.com/federicomarini/pcaExplorer_serveredition). If you intend to have it on a small server for your group, it can avoid repeating the installation procedure.

Closing up the issue and marking your reply as the one containing the solution 😉