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

plots and REQUIREments #55

Closed
cecileane opened this issue Aug 16, 2017 · 3 comments
Closed

plots and REQUIREments #55

cecileane opened this issue Aug 16, 2017 · 3 comments
Labels

Comments

@cecileane
Copy link
Member

Several package dependencies are used for plots only: julia packages Gadfly and RCall --and therefore the installation of R. plot methods use one or the other, but no other functions in use them. These requirements (R in particular) cause extra burden for users who want to run expensive computations on a cluster (like snaq!): they make no use of R (or RCall or Gadfly), but they still have to install these dependencies on each remote machine that they want to use. For some users, it's also a hassle to set things up so that these external software & packages will install correctly on remote machines.

Is there a way to say that RCall is required, but that R itself is only “suggested” without being required? @dmbates gave this great advice, which I would like to follow. But I would love to hear what others think, too, as this would involve some work and we all have other priorities.

RCall will obviously depend on an installation of R so if you want RCall you are going to need R.
The usual approach to this is to create a second, small package, say PhyloNetworksPlots,
that depends on PhyloNetworks and on RCall or some plotting packages.

You seem to be getting into the area of "conditional dependencies" which is like
saying that PhyloNetworks depends on RCall if you want plots but not if you don't.
Conditional dependencies have been discussed (see Stefan Karpinski's talk on
Version 1.0 at JuliaCon 2017 available on You-Tube) but they are tricky to implement.
I would go the second package route for the time being.

Here is Stefan's 2016 talk at 14:08 min, about conditional modules.
What do you think, @crsl4 and @pbastide?

@pbastide
Copy link
Member

This is a good point. I know this kind of conditional loading is possible in R, through the Suggests field of the DESCRIPTION file (see doc e.g. here).

Did you have any specific feedback requesting such a feature, for instance for clusters, as you mentioned? If so, then the swiftest way to do that, given the current state of Julia, seems indeed to go with the "nested packages" solution proposed by Douglas Bates.

However, if it is not an urgent need, it might be best to wait for Julia to come up with its own solution. They are working on it apparently, as shown by your link, and it appears to be a 1.0 milestone, see issue 6185. But it has no due date, and seems rather complex, so we don't know when it will be up.

To sum up: if we need the feature now, then let's do the PhyloNetworksPlot sub-package. Otherwise, the lazy solution is to wait for this feature to be implemented in core Julia.

@cecileane
Copy link
Member Author

Yes, the need has come up here with issues on CHTC resources (R installation). They found a solution in the meantime. So the feature is not needed right now. But I would not be surprised if a similar issue resurfaces for someone else on a different cluster. It's tempting to be lazy and wait for a new option in core Julia, hoping that the feature won't be needed until then.

@pbastide pbastide mentioned this issue Aug 18, 2017
@cecileane
Copy link
Member Author

RCall and Gadfly-based functions moved to PhyloPlots

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

No branches or pull requests

2 participants