[Bioc-devel] Tensorflow support for bioconductor packages

Hervé Pagès hpages at fredhutch.org
Thu Mar 29 00:10:23 CEST 2018


On 03/28/2018 02:41 PM, Hervé Pagès wrote:
> Hi Kieran,
> 
> Note that you can execute arbitrary code at load time by defining
> an .onLoad() hook in your package. So you *could* put something
> like this in your package:
> 
>    .onUnload <- function(libpath)
>    {
>      if (!reticulate::py_module_available("tensorflow"))
>          tensorflow::install_tensorflow()
>    }

should be .onLoad() in the above code

more below...

> 
> However, having things being automatically downloaded/installed
> on the user machine at package load-time is not a good idea. There
> are just too many things that can go wrong.
> 
> For example, I just tried to run tensorflow::install_tensorflow()
> on my laptop (Ubuntu 16.04) and was successful only after the 3rd
> attempt (I had to make some changes/adjustments to my system between
> each attempt). And Debian Linux is probably the easiest target!
> 
> Also note that install.packages() tries to load the package at the
> end of the installation when installing from source so if the
> .onUnload() hook fails, install.packages() considers that
   ^^^^^^^^^^^
    .onLoad()

same here, sorry

H.

> the installation of the package failed and it removes it.
> 
> Finally note that this installation needs to download hundreds of
> Mb of Python stuff.
> 
> So this is probably the reasons why the authors of the tensorflow
> CRAN package chose to separate installation of the tensorflow Python
> module from the installation of the package itself. There are plenty
> of good reasons for doing that.
> 
> What I would suggest instead is that you start your vignette with a
> note reminding the user to run tensorflow::install_tensorflow() if
> s/he didn't already do it. As a side note: I couldn't find a way to
> programmatically figure out whether the tensorflow Python module is
> already installed in the man page for tensorflow::install_tensorflow(),
> I had to dig in the source code of the unit tests to find 
> reticulate::py_module_available("tensorflow")).
> 
> In addition, you could also start each of your functions that rely on
> the tensorflow Python module with a check to see whether the module is
> available, and fail gracefully (with an informative error message) if
> it's not.
> 
> We'll figure out a way to install the tensorflow Python module on our
> build machines.
> 
> Hope this helps,
> H.
> 
> 
> On 03/28/2018 09:23 AM, Kieran Campbell wrote:
>> Hi all,
>>
>> Rstudio have released the Tensorflow package for R -
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__tensorflow.rstudio.com_tensorflow_&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=w2p-VnxwECq9u90RNv_B6yCOpXxDkcIPAjcgcpbEeBE&s=AchAIWmKzcnyw9VXJ7eH5M4dqnTAS0SACVMigCPusHk&e= 
>> - and we have started
>> incorporating it into some of our genomics packages for the heavy
>> numerical computation.
>>
>> We would ideally like these to be submitted to Bioconductor, but
>> there's a custom line required for Tensorflow installation in that
>> after calling
>>
>> install.packages("tensorflow")
>>
>> then Tensorflow must be installed via
>>
>> tensorflow::install_tensorflow()
>>
>> which would break package testing if tensorflow was simply imported
>> into the R package and wasn't already installed. Is there any way to
>> customise a package installation within Bioconductor to trigger the
>> tensorflow::install_tensorflow() ?
>>
>> As more people use tensorflow / deep learning in genomics I can see
>> this being a problem so it would be good to have a solution in place.
>>
>> Many thanks,
>>
>> Kieran Campbell
>>
>> _______________________________________________
>> Bioc-devel at r-project.org mailing list
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_bioc-2Ddevel&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=w2p-VnxwECq9u90RNv_B6yCOpXxDkcIPAjcgcpbEeBE&s=RS0haeXXw_GuGbzVJJuh_ZJKHuYhliDfLjtojgmqKFc&e= 
>>
>>
> 

-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the Bioc-devel mailing list