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
- Host: GitHub
- URL: https://github.com/Circuitscape/Circuitscape.jl
- Owner: Circuitscape
- License: mit
- Created: 2017-02-01T16:43:36.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2026-04-09T21:25:58.000Z (22 days ago)
- Last Synced: 2026-04-19T16:02:38.615Z (12 days ago)
- Topics: animal-movement, circuit-analysis, climate-change, epidemiology, forest-fire, julia, julia-language, landscape-ecology, landscape-genetics, movement-ecology, sparse-linear-systems
- Language: Julia
- Homepage: https://circuitscape.org
- Size: 8.62 MB
- Stars: 147
- Watchers: 5
- Forks: 39
- Open Issues: 2
- Releases: 45
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.cff
README.md
Circuitscape
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
-
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 AppleAcceleratebeforeusing Circuitscape. - Pardiso — a direct solver via Pardiso.jl, available as a package extension. Requires
using Pardisobeforeusing 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
- Omniscape.jl — Omnidirectional connectivity analysis built on Circuitscape
- AlgebraicMultigrid.jl — The default iterative solver used by Circuitscape
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
- Name: Circuitscape
- Login: Circuitscape
- Email:
- Kind: organization
- Description: Circuit-theoretic computations for landscape ecology
- Website: https://circuitscape.org/
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/5827361?v=4
- Repositories: 15
- Last ynced at: 2024-03-26T05:39:06.618Z
- Profile URL: https://github.com/Circuitscape
GitHub Events
Total
- Create event: 16
- Commit comment event: 4
- Release event: 2
- Delete event: 17
- Pull request event: 19
- Fork event: 3
- Issues event: 14
- Watch event: 16
- Issue comment event: 16
- Push event: 118
Last Year
- Create event: 12
- Commit comment event: 2
- Release event: 1
- Delete event: 16
- Pull request event: 15
- Issues event: 12
- Watch event: 10
- Issue comment event: 10
- Push event: 112
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 | 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:
- c02gd059md6p.tld: 1
- julialang.org: 1
- noack.dk: 1
- mayin.org: 1
- csp-inc.org: 1
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
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
- Total packages: 2
-
Total downloads:
- julia: 208 last-month
- Total dependent packages: 2 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 33
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
- Documenter *
- JuliaRegistries/TagBot v1 composite
- 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
- AlgebraicMultigrid *
- ArchGDAL *
- Dates *
- DelimitedFiles *
- Distributed *
- GZip *
- Graphs *
- IterativeSolvers *
- LinearAlgebra *
- Logging *
- REPL *
- SharedArrays *
- SimpleWeightedGraphs *
- SparseArrays *
- SuiteSparse *
- Test *
- Circuitscape *
- Pardiso *
Score: 12.916003194124464