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 connectivity arrays matrix-exponential circuit-theory circuitscape julia-package
Last synced: about 8 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 (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2025-12-03T05:08:13.000Z (22 days ago)
- Last Synced: 2025-12-22T00:37:01.657Z (4 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: 4.44 MB
- Stars: 141
- Watchers: 5
- Forks: 38
- Open Issues: 24
- Releases: 42
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.bib
README.md
Circuitscape
[!NOTE]
Please note that to run the latest version of Circuitscape.jl, you need to install Julia v1.11 or up.
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 has now been rewritten in Julia for better performance and scalability.
This work is based on the Python implemention in Circuitscape.py.
The New Circuitscape - Modern, Fast and Flexible
The new Circuitscape is built entirely in the Julia language, a new
programming language for technical computing. Julia is built from the
ground up to be fast. As such, this offers a
number of advantages over the previous version, and these are detailed below.
Faster and More Scalable
We benchmarked Circuitscape.jl (v0.1.0) with the Python version (v4.0.5) to obtain the
following results. We started up Circuitscape with 16 parallel processes,
and used benchmark problems from the standard Circuitscape
benchmark suite.
These benchmarks were run on a Linux (Ubuntu) server machine with the following specs:
- Name: Intel(R) Xeon(R) Silver 4114 CPU
- Clock Speed: 2.20GHz
- Number of cores: 20
- RAM: 384 GB
From the benchmark, we see that the new version is upto 4x faster
on 16 processes. However, the best performing bar in the chart is
Julia-CHOLMOD, which is a new feature introduced.
New Solver Mode - CHOLMOD
Julia-CHOLMOD is a new solver mode used in the new Circuitscape. It performs a cholesky
decomposition on the graph
constructed, and performs a batched back substitution
to compute the voltages. It plugs into the
CHOLMOD library,
which is part of the SuiteSparse collection of high performance sparse
matrix algorithms.
To use the this new mode, include a line in your Circuitscape
INI file:
solver = cholmod
The cholesky decomposition is a direct solver method, unlike the algebraic
multigrid method used by default in both the old and the new version.
The advantage with this new direct method is that it can be much faster than
the iterative solution, within a particular problem size.
Word of caution: The cholesky decomposition is not practical
to use beyond a certain problem size because of phenomenon called
fill-in, which results in loss of sparsity and large memory consumption.
Parallel, everywhere
The old Circuitscape had limited support for parallelism, which worked on Mac and
Linux, but didn't work on Windows.
Julia as a programming language is built from the ground up to be parallel,
and as a result the new Circuitscape natively supports parallelism on all three
platforms.
Single Precision (Experimental)
The new Circuitscape introduces the ability to run problems in
single precision as opposed to the standard double precision.
Single precision usually takes much less memory, but trades off
against solution accuracy.
Use this new feature by including a line in your config file:
precision = single
Installation
-
You will need to install Julia on your system first.
-
Once you start Julia, install Circuitscape by:
julia> using Pkg
julia> Pkg.add("Circuitscape")
If you want the latest development version, you can additionally do:
julia> Pkg.add(PackageSpec(name="Circuitscape", rev="master"))
Check if all the tests are passing by doing the following:
julia> Pkg.test("Circuitscape")
Usage
The current interface to Circuitscape is through the Julia terminal.
julia> using Circuitscape # loads the package into your environment
julia> compute("path/to/config/file.ini")
Contributing
If you have encounter any issues or would like to ask a question, please file
a report here.
Contributions in the form of
pull requests are also welcome!
Notes on INI files
Circuitscape takes as input INI files, which contain paths to the raster map, sources, grounds,
and other inputs, as well as flags for each run. If you're using the GUI
the INI file will automatically be generated for you and then fed into Circuitscape. But if you're
using the Julia prompt, then you must write one yourself. The easiest way to do this is to copy
an INI file from the tests and then modify it depending on your problem.
Citation
A preprint is available here: https://proceedings.juliacon.org/papers/10.21105/jcon.00058. You can also use the following BibTeX entry to cite this package:
@article{Anantharaman2020,
doi = {10.21105/jcon.00058},
url = {https://doi.org/10.21105/jcon.00058},
year = {2020},
publisher = {The Open Journal},
volume = {1},
number = {1},
pages = {58},
author = {Ranjan Anantharaman and Kimberly Hall and Viral B. Shah and Alan Edelman},
title = {Circuitscape in Julia: High Performance Connectivity Modelling to Support Conservation Decisions},
journal = {Proceedings of the JuliaCon Conferences}
}
Citation (CITATION.bib)
@article{hall2021circuitscape,
title={Circuitscape in julia: empowering dynamic approaches to connectivity assessment},
author={Hall, Kimberly R and Anantharaman, Ranjan and Landau, Vincent A and Clark, Melissa and Dickson, Brett G and Jones, Aaron and Platt, Jim and Edelman, Alan and Shah, Viral B},
journal={Land},
volume={10},
number={3},
pages={301},
year={2021},
publisher={Multidisciplinary Digital Publishing Institute}
}
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: 4
- Commit comment event: 2
- Release event: 1
- Issues event: 7
- Watch event: 13
- Delete event: 2
- Issue comment event: 8
- Push event: 11
- Pull request event: 6
- Fork event: 3
Last Year
- Create event: 3
- Commit comment event: 1
- Release event: 1
- Issues event: 7
- Watch event: 13
- Delete event: 2
- Issue comment event: 7
- Push event: 11
- Pull request event: 5
- Fork event: 3
Committers metadata
Last synced: 3 days ago
Total Commits: 679
Total Committers: 13
Avg Commits per committer: 52.231
Development Distribution Score (DDS): 0.262
Commits in past year: 9
Committers in past year: 2
Avg Commits per committer in past year: 4.5
Development Distribution Score (DDS) in past year: 0.333
| Name | Commits | |
|---|---|---|
| ranjanan | b****n@g****m | 501 |
| Vincent Landau | v****t@c****g | 78 |
| Viral B. Shah | V****h | 43 |
| Vincent Landau | v****u | 21 |
| dependabot[bot] | 4****] | 10 |
| 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
- csp-inc.org: 1
Issue and Pull Request metadata
Last synced: 22 days ago
Total issues: 101
Total pull requests: 71
Average time to close issues: 10 months
Average time to close pull requests: 3 months
Total issue authors: 71
Total pull request authors: 5
Average comments per issue: 5.39
Average comments per pull request: 0.76
Merged pull request: 59
Bot issues: 0
Bot pull requests: 25
Past year issues: 5
Past year pull requests: 7
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 19 days
Past year issue authors: 5
Past year pull request authors: 3
Past year average comments per issue: 0.4
Past year average comments per pull request: 0.29
Past year merged pull request: 3
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)
- carlosbedson (2)
- jaymschoen (2)
- ModiShrushti (1)
- GH-MostowyJ (1)
- mtf5319 (1)
Top Pull Request Authors
- ranjanan (28)
- dependabot[bot] (15)
- ViralBShah (11)
- github-actions[bot] (10)
- vlandau (7)
Top Issue Labels
- high-priority (3)
- docs (2)
- enhancement (1)
- GUI (1)
- bug (1)
Top Pull Request Labels
- dependencies (15)
- github_actions (3)
Package metadata
- Total packages: 2
-
Total downloads:
- julia: 124 total
- 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 9 months ago)
- Last Synced: 2025-12-23T07:23:49.299Z (2 days ago)
- Versions: 32
- Dependent Packages: 2
- Dependent Repositories: 0
- Downloads: 124 Total
-
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 almost 8 years ago)
- Last Synced: 2025-12-23T07:23:40.294Z (2 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Forks count: 4.142%
- Stargazers count: 6.455%
- Dependent repos count: 9.94%
- Average: 14.863%
- Dependent packages count: 38.915%
Score: 12.507176738313595