circuitscape.jl

Algorithms from circuit theory to predict connectivity in heterogeneous landscapes

https://github.com/circuitscape/circuitscape.jl

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.8%) to scientific vocabulary

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

ecology connectivity julia-package fluxes pde circuitscape circuit-theory meshing polygons projections

Scientific Fields

Artificial Intelligence and Machine Learning Computer Science - 40% confidence
Last synced: 4 months ago · JSON representation ·

Repository

Algorithms from circuit theory to predict connectivity in heterogeneous landscapes

Basic Info
  • Host: GitHub
  • Owner: Circuitscape
  • License: mit
  • Language: Julia
  • Default Branch: master
  • Homepage: https://circuitscape.org
  • Size: 4.25 MB
Statistics
  • Stars: 137
  • Watchers: 6
  • Forks: 38
  • Open Issues: 30
  • Releases: 42
Topics
animal-movement circuit-analysis climate-change epidemiology forest-fire julia julia-language landscape-ecology landscape-genetics movement-ecology sparse-linear-systems
Created almost 9 years ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

README.md

Circuitscape

| Documentation | Chat | Build Status| |:-----------------------------------------------------:|:------------------------------------:|:-----------:| | docs | gitter | Build Status codecov.io |

[!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

  1. You will need to install Julia on your system first.

  2. Once you start Julia, install Circuitscape by:

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

If you want the latest development version, you can additionally do:

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

Check if all the tests are passing by doing the following:

julia julia> Pkg.test("Circuitscape")

Usage

The current interface to Circuitscape is through the Julia terminal.

julia 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: ```bibtex @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} }

```

Owner

  • Name: Circuitscape
  • Login: Circuitscape
  • Kind: organization

Circuit-theoretic computations for landscape ecology

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}
}

GitHub Events

Total
  • Create event: 4
  • Commit comment event: 2
  • Release event: 1
  • Issues event: 2
  • Watch event: 11
  • Delete event: 1
  • Issue comment event: 6
  • Push event: 6
  • Pull request event: 5
  • Fork event: 3
Last Year
  • Create event: 4
  • Commit comment event: 2
  • Release event: 1
  • Issues event: 2
  • Watch event: 11
  • Delete event: 1
  • Issue comment event: 6
  • Push event: 6
  • Pull request event: 5
  • Fork event: 3

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 672
  • Total Committers: 13
  • Avg Commits per committer: 51.692
  • Development Distribution Score (DDS): 0.254
Past Year
  • Commits: 13
  • Committers: 3
  • Avg Commits per committer: 4.333
  • Development Distribution Score (DDS): 0.308
Top Committers
Name Email Commits
ranjanan b****n@g****m 501
Vincent Landau v****t@c****g 78
Viral B. Shah V****h 38
Vincent Landau v****u 21
dependabot[bot] 4****] 8
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
Guillaume Larocque g****c@g****m 1
Julia TagBot 5****t 1
Ranjan Anantharaman r****n@C****d 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 96
  • Total pull requests: 68
  • Average time to close issues: 8 months
  • Average time to close pull requests: 3 months
  • Total issue authors: 67
  • Total pull request authors: 5
  • Average comments per issue: 5.51
  • Average comments per pull request: 0.79
  • Merged pull requests: 57
  • Bot issues: 0
  • Bot pull requests: 22
Past Year
  • Issues: 3
  • Pull requests: 8
  • Average time to close issues: N/A
  • Average time to close pull requests: 14 days
  • Issue authors: 3
  • Pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.25
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • ranjanan (10)
  • Mavisan6 (4)
  • ViralBShah (4)
  • vlandau (4)
  • merijnvdb (3)
  • wpeterman (3)
  • luroy (3)
  • Daviser95 (2)
  • mvszuri (2)
  • jaymschoen (2)
  • linhunt (2)
  • carlosbedson (2)
  • SamLS84 (1)
  • mtf5319 (1)
  • SVMendoza (1)
Pull Request Authors
  • ranjanan (28)
  • dependabot[bot] (13)
  • ViralBShah (11)
  • github-actions[bot] (10)
  • vlandau (7)
Top Labels
Issue Labels
high-priority (3) docs (2) enhancement (1) GUI (1) bug (1)
Pull Request Labels
dependencies (13) github_actions (1)

Packages

  • Total packages: 2
  • Total downloads:
    • julia 168 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

  • Versions: 32
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 168 Total
Rankings
Forks count: 4.1%
Stargazers count: 6.5%
Average: 9.3%
Dependent repos count: 9.9%
Dependent packages count: 16.6%
Last synced: 4 months ago
juliahub.com: CircuitscapeMKLPardiso

Algorithms from circuit theory to predict connectivity in heterogeneous landscapes

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 4.1%
Stargazers count: 6.5%
Dependent repos count: 9.9%
Average: 14.9%
Dependent packages count: 38.9%
Last synced: 4 months ago