> I would not know how to accomplish this without using R's own dependency 
> handling mechanism and AFAIK their is no way to do this in Python.

Could this be done with rpy?

Niek

On Wed, Jun 24, 2015 at 12:53 PM, Pieter Neerincx
<[email protected]> wrote:
> Hi Kenneth,
>
> On Jun 24, 2015, at 11:10 AM, Kenneth Hoste <[email protected]> wrote:
>
>> Hi Pieter,
>>
>> On 24/06/15 10:58, Pieter Neerincx wrote:
>>> Hi,
>>>
>>> On Jun 24, 2015, at 7:34 AM, Kenneth Hoste <[email protected]> wrote:
>>>
>>>> Hi Riccardo,
>>>>
>>>> On 19/06/15 10:32, Riccardo Murri wrote:
>>>>> Hi Ken, all,
>>>>>
>>>>> (Kenneth Hoste, Thu, Jun 18, 2015 at 04:32:27PM +0200:)
>>>>>> We deliberately do not enable 'dependency=True', to ensure we can 
>>>>>> reproduce
>>>>>> the exact same installation later; if you let R automagically resolve
>>>>>> dependencies and let it pick the most recent version at that time for the
>>>>>> dependencies, you can't do an exact reproduced install.
>>>>> Could this be worked around by having EB save the list of installed R
>>>>> packages + versions (like `pip freeze`) upon first install, then re-use
>>>>> the saved list if available.
>>>>>
>>>>> Something along these lines (pseudo-code):
>>>>>
>>>>>         package_list_file = easyconfig_file_name.replace('.eb', 
>>>>> '.pkglist.csv')
>>>>>         if not exists(package_list_file):
>>>>>            # 1. install packages by name, let R choose version
>>>>>            # 2. dump list of installed packages to file: (pkgname, 
>>>>> version)
>>>>>         else:
>>>>>            # 1. read in the pkglist.csv file
>>>>>            # 2. use R's install_version() to install the exact same pkg 
>>>>> and version
>>>> I like this idea...
>>> +1
>>>
>>>> We could have an easyconfig parameter like 'auto_deps = True', and when 
>>>> that is set, EasyBuild lets R resolve dependencies by itself.
>>>>
>>>> Once the full list of easyconfigs has been installed, EasyBuild could then 
>>>> see what got installed, and which versions, and adjust the list of 
>>>> extensions included in the easyconfig file. The tricky bit may be the 
>>>> order, but there's probably a solution for that (see Stefano's R script).
>>>>
>>>> Now, who's up for implementing this? :-)
>>> Yesterday I started working on an R-script that generates an *.eb from an 
>>> existing R installation. This is based on Stefano's code (Many thanks for 
>>> sharing that!) and adds some commandline switches, help and code to figure 
>>> out whether a package came from a CRAN repo or from BioConductor. Hence 
>>> this is slightly different compared to the above as it generates a complete 
>>> *.eb from pure R, but I can easily add an option to only generate a pkglist 
>>> file, which may then be used by an existing *.eb.
>>>
>>> Is it Ok if I add this with a README to the ..../r/R/ dir in the 
>>> EasyConfigs repo and create a pull request or would you prefer this kind of 
>>> supplementary code to go elsewhere?
>>
>> It would be better if you could integrate this in the R easyblock somehow (I 
>> realize that may be a lot to ask for).
>
> The small amount of code that generates the *.eb could be in Python and hence 
> that could go in the easyblock, but the majority of the code is R based on 
> Stefano's script to generate the list of R packages their versions & the 
> repos they came from and then re-order the list based on the dependencies. I 
> would not know how to accomplish this without using R's own dependency 
> handling mechanism and AFAIK their is no way to do this in Python.
>
> So the best I can imagine for now is a modified R easyblock that can execute 
> an external R script to create a pkglist... and then generate an updated 
> easyconfig.
>
>> We currently don't have a good location for this; I don't think we should 
>> start adding 'random' scripts to the easyconfigs repo...
>
> The .../r/R/ dir in the EasyConfigs repo would be the first place where I 
> would look for examples and a way to create new updated R easyconfigs, so in 
> that sense it isn't a random location, but I agree that it is random in the 
> sense that it isn't EasyBuild style Python code and R specific. Preferably we 
> would not need a kludge like this :o
>
>> Maybe go with https://github.com/fgeorgatos/easybuild.experimental for now 
>> to share it with others?
>
> That looks like a good place to start, so we can have a first version of an 
> pure R easyconfig generator by the end of this week...
>
>> We should look into a contrib directory in the main EasyBuild repo 
>> (https://github.com/hpcugent/easybuild), where people can get stuff included 
>> without too much reviewing or very strict requirements, we already have a 
>> couple of PRs for stuff like that (see 
>> https://github.com/hpcugent/easybuild-framework/pull/1190, 
>> https://github.com/hpcugent/easybuild-framework/pull/1180).
>
> Check, let me know when there is a contrib dir in place.
>
> Cheers,
>
> Pi
>
>> regards,
>>
>> Kenneth
>
> -------------------------------------------------------------
> phone: +31 6 143 66 783
> e-mail: [email protected]
> skype:  pieter.online
> -------------------------------------------------------------
>

Reply via email to