Circuitscape

Modeling movement and gene flow of plants and animals, as well as identifying areas important for connectivity conservation.
https://github.com/Circuitscape/Circuitscape.jl

Category: Biosphere
Sub Category: Terrestrial Wildlife

Keywords

animal-movement circuit-analysis climate-change epidemiology forest-fire julia julia-language landscape-ecology landscape-genetics movement-ecology sparse-linear-systems

Keywords from Contributors

geo ecology gdal geospatial-data arrays connectivity julia-package circuitscape circuit-theory unconstrained-optimization

Last synced: about 19 hours ago
JSON representation

Repository metadata

Algorithms from circuit theory to predict connectivity in heterogeneous landscapes

README.md

Circuitscape

Documentation
Build Status
codecov.io

Circuitscape is an open-source program that uses circuit theory to model connectivity
in heterogeneous landscapes. Its most common applications include modeling movement and gene flow
of plants and animals, as well as identifying areas important for connectivity conservation.

Circuitscape is written in Julia for high performance and scalability.
More detail about the implementation can be found in the
JuliaCon paper.

[!NOTE]
Circuitscape.jl requires Julia v1.11 or later.

Installation

  1. Install Julia.

  2. At the Julia prompt, install Circuitscape:

julia> using Pkg
julia> Pkg.add("Circuitscape")

To install the latest development version:

julia> Pkg.add(PackageSpec(name="Circuitscape", rev="master"))

Run the test suite with:

julia> Pkg.test("Circuitscape")

Usage

Circuitscape jobs are configured via INI files. See the
documentation for a full guide
on data types, calculation modes, and all available options.

julia> using Circuitscape
julia> compute("path/to/config/file.ini")

You can also build INI files interactively using the built-in terminal UI:

julia> using Circuitscape
julia> Circuitscape.INIBuilder.start()

Or construct a configuration programmatically:

julia> using Circuitscape
julia> cfg = Circuitscape.init_config()
julia> cfg["habitat_file"] = "resistance_map.asc"
julia> cfg["point_file"] = "focal_nodes.asc"
julia> cfg["scenario"] = "pairwise"
julia> cfg["output_file"] = "output/results.out"
julia> compute(cfg)

Example INI files can be found in the
test folder.

Features

Solver Modes

Circuitscape supports four solver modes:

  • CG+AMG (default) — an iterative solver using algebraic multigrid preconditioning. Scales well to large problems.
  • CHOLMOD — a direct solver using Cholesky decomposition via the SuiteSparse library. Can be significantly faster for smaller problems, but memory use grows quickly with problem size due to fill-in.
  • Apple Accelerate — a direct solver using Apple's Accelerate framework sparse Cholesky, available as a package extension on macOS (requires macOS 13.4+). Requires using AppleAccelerate before using Circuitscape.
  • Pardiso — a direct solver via Pardiso.jl, available as a package extension. Requires using Pardiso before using Circuitscape.

To select a solver, add to your INI file:

solver = cholmod   # or accelerate, pardiso

Parallel Computing

Circuitscape supports multi-threaded computation on Linux, macOS, and Windows.
Start Julia with julia -t N to use N threads, or set parallelize = True in
your INI file.

Single Precision

Circuitscape can run in single precision for reduced memory use at the cost of solution
accuracy. Add to your INI file:

precision = single

Performance

Circuitscape.jl is up to 4x faster than the legacy Python version (Circuitscape v4.0.5)
on 16 parallel processes, with the CHOLMOD solver providing the best performance on
suitable problem sizes.

Benchmarks were run on a Linux (Ubuntu) server with an Intel Xeon Silver 4114 CPU
(2.20 GHz, 20 cores, 384 GB RAM) using problems from the
benchmark suite.

Related Projects

Contributing

If you encounter any issues or would like to ask a question, please file
a report here.
Contributions in the form of
pull requests are welcome!

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
type: software
title: "Circuitscape.jl"
authors:
  - family-names: Anantharaman
    given-names: Ranjan
  - family-names: Shah
    given-names: Viral B
preferred-citation:
  type: article
  title: "Circuitscape in Julia: Empowering Dynamic Approaches to Connectivity Assessment"
  authors:
    - family-names: Hall
      given-names: Kimberly R
    - family-names: Anantharaman
      given-names: Ranjan
    - family-names: Landau
      given-names: Vincent A
    - family-names: Clark
      given-names: Melissa
    - family-names: Dickson
      given-names: Brett G
    - family-names: Jones
      given-names: Aaron
    - family-names: Platt
      given-names: Jim
    - family-names: Edelman
      given-names: Alan
    - family-names: Shah
      given-names: Viral B
  journal: Land
  volume: 10
  issue: 3
  start: 301
  year: 2021
  publisher:
    name: Multidisciplinary Digital Publishing Institute
  doi: "10.3390/land10030301"
references:
  - type: article
    title: "Using circuit theory to model connectivity in ecology and conservation"
    authors:
      - family-names: McRae
        given-names: Brad H
      - family-names: Dickson
        given-names: Brett G
      - family-names: Keitt
        given-names: Timothy H
      - family-names: Shah
        given-names: Viral B
    journal: Ecology
    volume: 10
    start: 2712
    end: 2724
    year: 2008

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 4 days ago

Total Commits: 714
Total Committers: 13
Avg Commits per committer: 54.923
Development Distribution Score (DDS): 0.298

Commits in past year: 43
Committers in past year: 2
Avg Commits per committer in past year: 21.5
Development Distribution Score (DDS) in past year: 0.093

Name Email Commits
ranjanan b****n@g****m 501
Vincent Landau v****t@c****g 78
Viral B. Shah v****l@m****g 76
Vincent Landau v****u 21
dependabot[bot] 4****] 12
github-actions[bot] 4****] 6
Andreas Noack a****s@n****k 5
CompatHelper Julia c****y@j****g 5
Yeesian Ng n****n@g****m 4
vlucet V****t 3
Julia TagBot 5****t 1
Guillaume Larocque g****c@g****m 1
Ranjan Anantharaman r****n@C****d 1

Committer domains:


Issue and Pull Request metadata

Last synced: 22 days ago

Total issues: 102
Total pull requests: 75
Average time to close issues: 11 months
Average time to close pull requests: 3 months
Total issue authors: 72
Total pull request authors: 5
Average comments per issue: 5.36
Average comments per pull request: 0.72
Merged pull request: 62
Bot issues: 0
Bot pull requests: 27

Past year issues: 5
Past year pull requests: 9
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 13 days
Past year issue authors: 5
Past year pull request authors: 2
Past year average comments per issue: 1.0
Past year average comments per pull request: 0.0
Past year merged pull request: 6
Past year bot issues: 0
Past year bot pull requests: 5

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/Circuitscape/Circuitscape.jl

Top Issue Authors

  • ranjanan (10)
  • Mavisan6 (4)
  • ViralBShah (4)
  • vlandau (4)
  • wpeterman (3)
  • merijnvdb (3)
  • luroy (3)
  • linhunt (3)
  • Daviser95 (2)
  • mvszuri (2)
  • jaymschoen (2)
  • carlosbedson (2)
  • SamLS84 (1)
  • GH-MostowyJ (1)
  • mtf5319 (1)

Top Pull Request Authors

  • ranjanan (28)
  • dependabot[bot] (17)
  • ViralBShah (13)
  • github-actions[bot] (10)
  • vlandau (7)

Top Issue Labels

  • high-priority (3)
  • docs (2)
  • GUI (1)
  • enhancement (1)
  • bug (1)

Top Pull Request Labels

  • dependencies (17)
  • github_actions (5)

Package metadata

juliahub.com: Circuitscape

Algorithms from circuit theory to predict connectivity in heterogeneous landscapes

  • Homepage: https://circuitscape.org
  • Documentation: https://docs.juliahub.com/General/Circuitscape/stable/
  • Licenses: MIT
  • Latest release: 5.15.0 (published about 1 year ago)
  • Last Synced: 2026-04-08T01:08:25.905Z (24 days ago)
  • Versions: 32
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 205 Last month
  • Rankings:
    • Forks count: 4.142%
    • Stargazers count: 6.455%
    • Average: 9.282%
    • Dependent repos count: 9.94%
    • Dependent packages count: 16.592%
juliahub.com: CircuitscapeMKLPardiso

Algorithms from circuit theory to predict connectivity in heterogeneous landscapes

  • Homepage: https://circuitscape.org
  • Documentation: https://docs.juliahub.com/General/CircuitscapeMKLPardiso/stable/
  • Licenses: MIT
  • Latest release: 0.1.0 (published about 8 years ago)
  • Last Synced: 2026-04-08T01:07:56.468Z (24 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 3 Last month
  • Rankings:
    • Forks count: 4.142%
    • Stargazers count: 6.455%
    • Dependent repos count: 9.94%
    • Average: 14.863%
    • Dependent packages count: 38.915%

Dependencies

docs/Project.toml julia
  • Documenter *
.github/workflows/CompatHelper.yml actions
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v5 composite
  • actions/checkout v6 composite
  • codecov/codecov-action v5 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v2 composite
Project.toml julia
  • AlgebraicMultigrid *
  • ArchGDAL *
  • Dates *
  • DelimitedFiles *
  • Distributed *
  • GZip *
  • Graphs *
  • IterativeSolvers *
  • LinearAlgebra *
  • Logging *
  • REPL *
  • SharedArrays *
  • SimpleWeightedGraphs *
  • SparseArrays *
  • SuiteSparse *
  • Test *
lib/CircuitscapeMKLPardiso/Project.toml julia
  • Circuitscape *
  • Pardiso *

Score: 12.916003194124464