Git Product home page Git Product logo

ecologicalhypergraphs.jl's Introduction

EcologicalHypergraphs.jl

EcologicalHypergraphs.jl allows you to do ecology using hypergraphs. Currently, it supports using hypergraphs do create large dynamical foodweb models which can incorporate non-trophic effects. In the future, it will support statistical study of these hypergraphs as well. It may also support embedding these hypergraphs in spatial networks in the future to facilitate metacommunity models.

Getting started

This package isn't yet in the Julia general registry. You can still install it directly from this git repository.

] add github.com/jkharv/EcologicalHypergraphs.jl

Examples

There are examples in the example directory of this repository.

Integration with other packages

  • SimpleHypergraphs.jl
    • Conversion functions are planned for converting to and from SimpleHypergraphs.jl types.

EcologicalNetworks.jl

EcologicalHypergraphs.jl currently has constructors for creating hypergraphs from EcologicalNetworks.jl types, allowing access to all the structural models that it provides. We will eventually include functions that can project hypergraphs into pairwise graphs using EcologicalNetworks.jl types, allowing the use of existing analysis tools in the package.

Symbolics.jl

Dynamical models done in EcologicalHypergraphs.jl are specified using Symbolics.jl. You can do anything that Symbolics.jl allows you to do to the resultant model.

ModelingToolkit.jl

Symbolics.jl is used via ModelingToolkit.jl meaning that parameters are tagged differently than variables and creating numerical systems ModelingToolkit.jl does all of its usual symbolic manipulations on the system.

ecologicalhypergraphs.jl's People

Contributors

jkharv avatar

Stargazers

 avatar

Watchers

 avatar

ecologicalhypergraphs.jl's Issues

Rewrite `Node` type to use `Dict{Num, Float64}` for vars and params.

Right now the Node type keeps four vectors of Nums and DistributionOptions, two for parameters, and two for variables. These should each be replaced with a Dict{Num, Float64} for each of parameters and variables.

Doing this obviates the need for a bunch of the code in build_system.jl.

Create a new `CommunityMatrix` type.

Community matrices in this package should be represented by a special purpose type.

  • CM should be parametrically types to allow Num and Real based matrices.
  • CM is indexable by species name and cartesian index (string or int).
  • CM includes parameter and variable dicts.
  • CM implements the AbstractArray interface.
  • Existing code is rewritten to use this new type rather than Matrix{Num}

https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices
https://docs.julialang.org/en/v1/manual/interfaces/#man-interface-array

Store variable values in `EcologicalHypergraph`

The variables appear in many nodes, so it doesn't make sense to store their values locally to a node. Setting initial conditions then required iterating through all of the nodes which contain that variable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.