Well the fun just keeps rolling in with the newest R update and ensuing package updates. Two new issues have just been brought to my attention that prevent new installations of ENMTools: first, the newest version of phyloclim no longer exports the "descendants" function, which ENMTools uses. There's a hot fix for that on the develop branch of ENMTools on Github, where I basically just copied the code over from phyloclim for the time being so it no longer has to be imported.
The second issue is a bit more of a hassle: ecospat has been removed from CRAN, and I'm not sure why. Given that ENMTools requires ecospat to run, this is a bit of an issue. For now, all you can really do is install ecospat manually from the Github mirror of the CRAN repository, and then install ENMTools after that. Hopefully ecospat will get updated and re-uploaded to CRAN soon, but failing that we might need to find a more permanent workaround eventually.
Monday, June 4, 2018
Thursday, May 17, 2018
Issues with installing ENMTools under newest versions of R
During the course I co-taught with Matt Fitzpatrick in Glasgow a few weeks ago, it came out that a number of people were having trouble installing ENMTools. A lot of this seems to stem from the newest version of R, and in particular how it interacts with your Java installation.
Some Mac users (including me) were able to fix this just by going to the console and typing "R CMD javareconf" and restarting R.
Windows users seemed to have much more significant issues, however. There seemed to be several issues, but here's a solution that helped several of the students, courtesy of Hirzi Luqman:
Error:
* installing *source* package ‘ENMTools’ ...
** R
** data
*** moving datasets to lazyload DB
** tests
** byte-compile and prepare package for lazy loading
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framewo rk/Versions/3.5/Resources/ library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.f ramework/Versions/3.5/Resource s/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachi nes/jdk-9.jdk/Contents/Home/ lib/server/libjvm.dylib
Referenced from: /Library/Frameworks/R.framewor k/Versions/3.5/Resources/ library/rJava/libs/rJava.so
Reason: image not found
ERROR: lazy loading failed for package ‘ENMTools’
* removing ‘/Library/Frameworks/R.framewo rk/Versions/3.5/Resources/ library/ENMTools’
Installation failed: Command failed (1)
Problem:
ENMtools/rJava was looking for (and couldn't find) the library "libjvm.dylib" in the directory "/Library/Java/JavaVirtualMach ines/jdk-9.jdk/Contents/Home/ lib/server/", because no such directory existed (this refers to a Java 9 installation); I don't know why it looked for the file there...
Solution: I just copied the same file from the Java 8 directory (or whatever Java version is installed on the computer; in my case the directory was "/Library/Java/JavaVirtualMach ines/jdk1.8.0_45.jdk/Contents/ Home/lib/server/") to the R library directory "/Library/Frameworks/R.framewo rk/Versions/3.5/Resources/lib/ ", and it worked
Update: GitHub user Sandy had a different issue, detailed here. The fix in that case was:
I removed all PATH related to "java", then Add jvm.dll to PATH (adding "%JAVA_HOME%\jre\bin\server;" to PATH).
After that, I set up the JAVA_HOME in R:
Some Mac users (including me) were able to fix this just by going to the console and typing "R CMD javareconf" and restarting R.
Windows users seemed to have much more significant issues, however. There seemed to be several issues, but here's a solution that helped several of the students, courtesy of Hirzi Luqman:
Error:
* installing *source* package ‘ENMTools’ ...
** R
** data
*** moving datasets to lazyload DB
** tests
** byte-compile and prepare package for lazy loading
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framewo
dlopen(/Library/Frameworks/R.f
Referenced from: /Library/Frameworks/R.framewor
Reason: image not found
ERROR: lazy loading failed for package ‘ENMTools’
* removing ‘/Library/Frameworks/R.framewo
Installation failed: Command failed (1)
Problem:
ENMtools/rJava was looking for (and couldn't find) the library "libjvm.dylib" in the directory "/Library/Java/JavaVirtualMach
Solution: I just copied the same file from the Java 8 directory (or whatever Java version is installed on the computer; in my case the directory was "/Library/Java/JavaVirtualMach
Update: GitHub user Sandy had a different issue, detailed here. The fix in that case was:
I removed all PATH related to "java", then Add jvm.dll to PATH (adding "%JAVA_HOME%\jre\bin\server;" to PATH).
After that, I set up the JAVA_HOME in R:
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_171\\").
Thursday, April 5, 2018
Course Reminder: Quantitative geographic ecology using R. Glasgow, April 30 to May 4.
Hey everybody! There are still open slots in my upcoming course with Matt Fitzpatrick entitled "Quantitative geographic ecology using R: modelling genomes, niches, and communities". Sign up now, it's coming up fast!
The course will include introductory lectures, guided computer coding in R, and exercises for the participants, with an emphasis on visualization and reproducible workflows. All modelling and data manipulation will be performed with R. Attendees will learn to use niche modelling algorithms including Maxent, GLM, GAM, and others, and will learn both new and existing methods for conducting comparative studies using ENMs in the new ENMTools R package. Generalized Dissimilarity Modelling (GDM) and Gradient Forest (GF) will be taught for modelling genomic and community-level data. The course is intended for intermediate R users with interest in quantitative geographical ecology.
https://www.prstatistics.com/course/quantitative-geographic-ecology-using-r-modelling-genomes-niches-and-communities-qger01/
The course will include introductory lectures, guided computer coding in R, and exercises for the participants, with an emphasis on visualization and reproducible workflows. All modelling and data manipulation will be performed with R. Attendees will learn to use niche modelling algorithms including Maxent, GLM, GAM, and others, and will learn both new and existing methods for conducting comparative studies using ENMs in the new ENMTools R package. Generalized Dissimilarity Modelling (GDM) and Gradient Forest (GF) will be taught for modelling genomic and community-level data. The course is intended for intermediate R users with interest in quantitative geographical ecology.
https://www.prstatistics.com/course/quantitative-geographic-ecology-using-r-modelling-genomes-niches-and-communities-qger01/
Thursday, March 22, 2018
Biodiversity Informatics Training Curriculum presentation on the past, present, and future of ENMTools
Thanks to Town for having me on, and I apologize to y'all for the technical problems. Everything worked right up until the very second we started recording.
Recent changes: trim dupes by raster, species from csv file, and improvements to ecospat tests
I've been making a bunch of small changes recently. Some of it you won't see, but bits of it are there to make your life easier. One nice little trick is that now you can go:
species.list = species.from.file("myfile.csv", species.col = "Species")
That will create a unique enmtools.species object for every unique value in the column named "Species". If you have one species in the file, you just get back an enmtools.species object. If you have multiple species in the file, you get a list of enmtools.species objects. This will save a ton of time, particularly if you're building an entire clade for the aoc tests.
I've also added a "trim.dupes.by.raster" function. Basically you feed that a set of points and a raster, and it trims your data set down so there's a max of one point per grid cell. Nothing dramatic, but it's something people do a lot so it's worth automating. It's easy to use too:
new.points = trim.dupes.by.raster(old.points, env)
Finally, I tweaked a bunch of stuff for the ecospat functions. Most of it you won't notice, but it deals with some potential errors that could come up if you had mismatched NAs in your environment rasters. The big changes are (1) ecospat was calculating p values wrong, so now that's being done in ENMTools, and (2) now the ENMTools ecospat functions will automatically do PCA if you pass them more than two rasters unless told otherwise.->->
species.list = species.from.file("myfile.csv", species.col = "Species")
That will create a unique enmtools.species object for every unique value in the column named "Species". If you have one species in the file, you just get back an enmtools.species object. If you have multiple species in the file, you get a list of enmtools.species objects. This will save a ton of time, particularly if you're building an entire clade for the aoc tests.
I've also added a "trim.dupes.by.raster" function. Basically you feed that a set of points and a raster, and it trims your data set down so there's a max of one point per grid cell. Nothing dramatic, but it's something people do a lot so it's worth automating. It's easy to use too:
new.points = trim.dupes.by.raster(old.points, env)
Finally, I tweaked a bunch of stuff for the ecospat functions. Most of it you won't notice, but it deals with some potential errors that could come up if you had mismatched NAs in your environment rasters. The big changes are (1) ecospat was calculating p values wrong, so now that's being done in ENMTools, and (2) now the ENMTools ecospat functions will automatically do PCA if you pass them more than two rasters unless told otherwise.->->
Tuesday, February 27, 2018
Interactive species and model plots
Russell Dinnage has just added a really cool feature: interactive plotting of enmtools.species and enmtools.model objects. Here's a species:
And here's a model:
The maps are zoom-able and pan-able, and draw very quickly. Source maps are downloaded from the internet on the fly, though, which means you do need an internet connection to use these functions.
The functions in question are "interactive.plot.enmtools.species" and "interactive.plot.enmtools.model", respectively. All are now implemented on the master branch of ENMTools on GitHub.
And here's a model:
The maps are zoom-able and pan-able, and draw very quickly. Source maps are downloaded from the internet on the fly, though, which means you do need an internet connection to use these functions.
The functions in question are "interactive.plot.enmtools.species" and "interactive.plot.enmtools.model", respectively. All are now implemented on the master branch of ENMTools on GitHub.
Thursday, February 1, 2018
Playing around with a new version of response plots
The goal here is to give you some idea of what your model is saying in the context of the data that generated it, instead of just plotting the response function. Currently it's been tested on GAM, GLM, Bioclim, and Domain models. I'll do some more testing and probably move it over to the main branch before the weekend.
Subscribe to:
Posts (Atom)


