main release goal
This release restores some key features that had been lost after dropping the direct dependencies raster and sp in v0.9.1.:
saveRDS()
and readRDS()
). (#172)breaking changes
As compared to IsoriX versions < 0.9.1, the following changes may break existing code:
code for plots:
r
layer(sp.polygons(CountryBorders, col = "white")) +
layer(sp.polygons(OceanMask, col = "white", fill = "lightgreen"))
now needs to be replaced by:
r
layer(lpolygon(CountryBorders, border = "white")) +
layer(lpolygon(OceanMask, border = "white", col = "lightgrey"))
Notice both the change in the function used to plot polygons and the change in the arguments used to control the colour of the borders and the colour of the fill.
Similarly, the function sp.points()
should be replaced by lpoints()
and so on.
saving and reloading objects save()
& load()
can no longer be used, one must instead use saveRDS()
& readRDS()
.
new features
the NEWS (contained in this file) are now stored in NEWS.md
rather than in inst/NEWS.Rd
and use a markdown syntax.
it is now possible to have missing values in predictors used to build isoscapes and in the isoscapes themselves.
major changes
plotting methods for polygons, lines and points have been removed from IsoriX and are now handled by lattice and rasterVis.
saveRDS()
for objects of the class ISOSCAPE
, CALIBFIT
& ISOFIND
(see ?serialize
for details).new S3 and S4 method readRDS()
which should be able to read objects created in IsoriX, as well as objects created with terra and objects created otherwise.
In case of issues reading RDS files not created by IsoriX, try using base::readRDS()
with the namespace base::
mentioned explicitly and please let us know of this issue.
minor changes
the bookdown is now listed in DESCRIPTION.
some old URLs have been updated.
bug fixes
the function isomultiscape()
was still using raster instead of terra.
the object PrecipBrickDE
was still using raster instead of terra.
internal (geeky) changes
new function .safe_and_quiet_predictions()
which turns wraps around spaMM::predict.HLfit()
, turns warnings into messages, allows not to display the same messages many times, and outputs NA
s when spaMM::predict.HLfit()
fails. For testing, options_IsoriX(spaMM_debug = TRUE)
may be used to restore the original behaviour of spaMM::predict.HLfit()
.
ISOSCAPE
, CALIBFIT
& ISOFIND
are now also defined as S4 classes, which was necessary to design methods for saveRDS()
which are compatible with terra.WORDLIST
file which is used by devtools::spell_check()
(via spelling::spell_check_package
) to check for typos in the documentation.|
or &
which should have always been ||
or &&
(spotted via lintr::lint_package()
).1:...
which should have always been handled by seq_along
or seq_len
to avoid NULL issues (spotted via lintr::lint_package()
).withr::defer
).main release goal
Several spatial packages previously used by IsoriX are likely to retire sometimes in October 2023. The maintainers of those packages have recommended developers to instead rely on alternative packages which have been recently developed and which superseed the old packages. As a consequence, we had to recode a lot of IsoriX for it to continue to work. For the most part, these changes are internal and should not impact much users, but it is possible that old workflows used to create plots will have to be adapted for the code to keep working. Moreover, IsoriX is not the only package that had to be overhauled, other packages used by IsoriX are also being adapted, which means that the programming landscape is dynamic and bugs caused by incompatibility between packages are likely to surface. We will do our best to react quickly, but please let us know as soon as something goes wrong by dropping issues on the GitHub repository for IsoriX (https://github.com/courtiol/IsoriX/issues). All this change can be perceived as annoying, but it is also for the best: it will allow us to add new features more easily in IsoriX in the future and it also makes it easier for users to convert IsoriX outputs so as to manipulate them using packages such as sf and ggplot2.
major changes
IsoriX no longer relies on the package raster. It instead now uses terra for handling rasters. (#90 #161)
IsoriX no longer relies on the package sp. Plotting functionalities from sp have now been replaced by direct calls to lattice. For now, we had to implement methods and generics calling lattice in IsoriX, but those should ultimately be handled within rasterVis and lattice.
minor changes
getprecip()
now normalizes the input file and returns the path where the precipitation rasters are stored.
prepcipitate()
can now handle as input for path =
either the full path to the files returned by getprecip()
-- which contains the folder provided to path
when calling getprecip()
in addition to "/wc2.1_30s_prec"
-- or the reduced path which only contains the folder provided to path
when calling getprecip()
.getprecip()
now changes the timeout R options temporarily so as to avoid the download to fail because the default timeout setting is too short. (#148)GNIPDataALLagg
and GNIPDataEUagg
was incorrect. (#158)one message about possible extrapolation during calibration was erroneous and is now removed. (#159)
internal (geeky) changes
OceanMask
and CountryBorders
are no longer stored as RDA files in /data
, but as RDS files in /extata
since objects created with terra cannot be saved as RDA files. These files are automatically loaded when the package is attached.
bug fixes
the previous released introduced an error in how the variance of the assignment test is computed in the absence of calibration (with important consequence in terms of assignments). This is now fixed. (#151)
minor changes
the base package colourspace is now suggested to avoid a note in R CMD check.
new features
the function calibfit()
gains an argument method that allows for selecting one of four calibration methods ("wild", "lab", "desk", "desk_inverse"). This allows for users to use:
1) calibration samples associated with unknown environmental isotopic values,
2) calibration samples associated with known environmental isotopic values, or
3) & 4) the intercept and slope of a calibration relationship computed by others (e.g. values found in a paper).
Note: the "desk" methods allow for the consideration of a fractionation factor too (i.e. slope = 0). See ?calibfit
for details. (#20 & #142)
the function getelev()
has been completely rewritten so as to rely on the package elevatr to download elevation data. You should check ?getelev
for learning how to use the new version of the function, but we retained the core principle of the previous function so that old workflow will only require minor adjustments. The new version still saves a *.tif
file on the disk, albeit using a different file name to avoid (data) confusion. (#140 & #107)
isofind()
gains an argument neglect_covPredCalib
that allows for the computation of a covariance term that was so far neglected in IsoriX. See ?isofind
for details. (#143)prepraster()
gains an argument values_to_zero
to turn a range of elevation values to zeros (nullify negative elevation values by default). This is particular useful because the new version of get_elev()
download an elevation raster that includes bathymetry.new internal function .invert_reg()
to invert regression (used for method "desk_inverse" in calibfit()
.
minor changes
when calling plot()
on an object created with calibfit()
, the plotting function now returns the fitted values and CI for users to be able to make alternative plots. (#44)
xlim
for the plotting function for calibration fits.line
for customizing how to plot the regression line in calibration fits.calibfit()
performs more check on extrapolation. (#119)plot()
on an object of class ISOFIT, the x-axis for the plot showing the Matérn correlation should have a range more adequate irrespective when autocorrelation is strong over short distances. (#134)?plot()
now contains a description of what symbols mean in plots. (#138)plot()
on an object created with isofind()
, the plotting function now detects sample of size 1 and no longer displays "Group" in the title of the assignment plot even if who
= "group". (#120)data.frame
as input should also now be compatible when provided with a tibble
. (#118)default y-axis title changed to "Isotopic value in the environment" when plotting calibration fits to be flexible enough irrespective of the methods used in calibfit()
internal (geeky) changes
the argument long_min
, long_max
, lat_min
& lat_max
function prepsources()
now have explicit default values and should no longer be missing.
IsoriX should now work with tibbles as inputs. (#118)
bug fixes
the printing method for the object of class ISOSCAPE was somehow not exported and thus not used (unreported issue).
new features
new argument ylim
for the plotting function for calibration fits.
it is now possible to assign data containing missing isotopic values.
internal (geeky) changes
the SpatialPolygons CountryBorders
and OceanMask
have been rebuilt for possibly improving the compatibility with new sp & rgdal.
WorlClim
has now changed address, so links have been updated.rgdal is now listed as a suggested package.
minor changes
several URL had changed and have been updated.
bug fixes
the plotting function was not working for isoscapes not stored in memory due to a wrong use of the quantile function. Many thanks to Dr. Gary Roemer and Amy Withers for reporting it! (#113)
new features
the datasets used in Courtiol et al. 2019 are now provided.
PrecipBrickDE
containing monthly precipitation amounts for Germany.y_title
for the plotting function for isoscapes to allow one to simply change the title.xlab
and ylab
for the plotting function for calibration fits.the plotting function for assignments can now show the location of the assignment samples.
major changes
the citations for the package have been updated!
the vignettes have now been moved to a bookdown. To access the documentation you should now visit: https://bookdown.org/content/782/
minor changes
all arguments with the structure bla.bla
have been renamed so as to match the structure bla_bla
.
calibfit()
gains an argument ...
for more control.rasterLayer
has been included for convenience.relevate()
is now called prepraster()
.prepdata()
is now called prepsources()
.elevation.raster
has been renamed as raster
.in several functions the argument xxx.data
has been renamed as data
.
internal (geeky) changes
the file storing the internal functions is now called zzz.R
.
dontrun
and donttest
calls have been replaced by comments due to new R CMD check flags.downloadfile()
is now exported.predict.HLfit()
, the prediction are now being made by chunk of 1000 points instead of 150. This should lead to a tiny gain in performance.isoscape()
was performing predictions twice every 150 (or now 1000) locations, this was not influencing the isoscapes produced, but this has now been corrected.prepraster()
now produces an raster stored in memory if it is possible. This should prevent bugs that appears when using loaded rasters that were previously saved (the temporary link to the hard drive location is no longer correct in this case)..objective_fn_calib()
has been moved within the function calibfit()
as it is not used elsewhere.calibfit()
as been prepared for a possible activation of a random effect for species ID in the future. But whether it would make sense or not remains to be determined.the function .Fisher_method()
now directly computes the exponential of the log pv if only one value is provided. This leads to much faster assignment in the case of a single observation.
bug fixes
the plotting function for calibration fit was displaying CI based on variance instead of SD.
getprecip()
and prepcipitate()
were not handling paths manually defined properly.MULTIISOFIT
.new features
this is a minor update necessary to maintain compatibility with spaMM 2.4.
internal (geeky) changes
the syntax for the extraction of correlation terms of spaMM objects has changed.
new features
the calibration step is now optional, allowing for users to use an isoscape directly fitted on tissues instead of precipitation water.
queryGNIP()
has been renamed and is now called prepdata()
, this function can also handle other datasets than GNIP.the function relevate()
has been modified to make crop possible around the pacific meridian -180/180 (but several issues remain to handle extra plot layers automatically).
internal (geeky) changes
an additional options as been added to prevent prompting during examples.
.converts_months_to_numbers()
.new features
the maximum duration of running time for examples can now be controlled using IsoriX.options(example_maxtime = XX)
.
relevate()
now allows for a cropping larger than the extent of the weather stations by means of the argument margin_pct
.prepcipitate()
to prepare the precipitation brick.getprecip()
to download monthly precipitation rasters from WorldClim.isomultifit()
fitting isoscapes per strata (month, year, or any "split").isomultiscape()
building isoscapes averaged across strata.new function create_aliens()
simulating of organism data.
minor changes
the inputs for filtering data by month or year using queryGNIP()
have changed.
the default fixed effect structure for the mean model is isofit()
has changed.
internal (geeky) changes
the namespace is now generated with Roxygen2.
bug fixes
the package could not be detached and reloaded.
getelev()
was breaking in some cases.the title of the assignment plot was missing when a single individual was plotted.
new features
new vignette explaining how to export spatial objects to GIS.
GNIPdata
has been updated and now contains data for 2014.downloadfile()
to download non standard elevation raster or any other file.getelev()
can perform MD5 sum checks if the package tools is installed.getelev()
can display additional information during download if verbose
> 1.animalID
in the assignment dataset can now handle names with spaces.added Codecov to track test coverage for the package.
minor changes
the modification of the option set_ll_warn
from the sp package has been moved to .onLoad()
(instead of .onAttach()
) and the original state is now restored while unloading IsoriX.
getelev()
lost its address
argument as downloadfile()
should now be used to download non-standard elevation rasters.*.Rd
files for documentation are now generated with Roxygen2.queryGNIP()
is now provided with a single month argument specifying the months to select.Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.