NEWS
circuitscaper 0.1.1.9000
Bug fixes
cs_setup() now finds Julia wherever JuliaCall::julia_setup() would,
instead of only on the PATH. Previously, a Julia installed by
cs_install_julia() (which JuliaCall::install_julia() places outside the
PATH) was not found in later sessions, so cs_setup() failed with "Julia
not found" until julia_home was given explicitly. The same applied to
Julia installed via juliaup or Homebrew when R was started from the macOS
GUI, whose PATH lacks the shell's. cs_install_julia(),
cs_julia_available(), and the startup message use the same search.
os_run(parallelize = TRUE) now checks the running Julia session before
calling Omniscape, and warns and runs serially if it cannot run in
parallel: if Julia has only one thread, or if it was started with an
interactive thread (e.g. JULIA_NUM_THREADS = "4" rather than "4,0"),
which makes Omniscape releases before 0.6.3 fail with a BoundsError. This
can happen when Julia is started outside cs_setup(), for example by
calling JuliaCall::julia_setup() directly.
cs_setup() now records the number of threads Julia actually has, and
warns when threads cannot take effect because Julia was already running
(including when started outside circuitscaper). Previously it recorded the
requested count, and os_run(parallelize = TRUE) could reset the record
to 1 when it started Julia.
os_run() now stops with a clear error if the resistance or conductance
surface contains zero or negative values, which Omniscape rejects without
writing outputs. Previously this surfaced as an obscure failure to read
Omniscape's output.
circuitscaper 0.1.1 (2026-10-01)
New features
- New
os_condition() constructor gives os_run() full access to
Omniscape's conditional connectivity (#2):
"within" comparisons with user-specified bounds (lower, upper).
- Present-vs-future comparisons (
future), in which sources' present-day
values are compared against targets' future values, as in
climate-tracking connectivity analyses.
- Two simultaneous conditions, by passing a list of two
os_condition()
objects.
os_run() now warns when a condition layer has missing values at source
cells, which Omniscape does not filter.
- All
cs_*() functions and os_run() now warn if the installed
Circuitscape.jl or Omniscape.jl does not recognize a configuration option
written by circuitscaper, rather than letting the option silently have no
effect.
Bug fixes
- In 0.1.0,
os_run()'s condition_type argument was written to the
Omniscape configuration under a key Omniscape does not recognize, so it was
silently ignored. All conditional analyses instead used Omniscape's
defaults, "within" with bounds of 0 and 0: a source was connected to a
target only if its condition value exactly equaled the median value of the
target block. This was neither the documented behavior (an unbounded range)
nor the requested "equal" comparison. Results from 0.1.0 that used
condition should be rerun.
- In 0.1.0,
four_neighbors = TRUE was written to the Circuitscape
configuration under an unrecognized key and silently ignored in
cs_pairwise(), cs_one_to_all(), cs_all_to_one(), and cs_advanced();
all analyses used 8-neighbor connectivity. Results from 0.1.0 that used
four_neighbors = TRUE should be rerun.
Breaking changes and deprecations
- Passing a raster directly as
os_run(condition = ) is now shorthand for
os_condition(x, type = "equal"). Use os_condition() for "within"
comparisons, which now require explicit bounds.
os_run()'s condition_type argument is deprecated. condition_type = "equal" still works with a warning; condition_type = "within" now errors,
since it has no way to specify bounds.
circuitscaper 0.1.0 (2026-04-09)