EcoJulia / EcoSISTEM.jl

Julia package for ecosystem simulation
Other
41 stars 8 forks source link

a few feature requests #13

Open gottacatchenall opened 3 years ago

gottacatchenall commented 3 years ago

hi everyone,

as discussed a bit in the zulip I'm working on building a set of tools within EcoJulia that will use Simulation.jl as a base. as i've started to familiarize myself with the code i've noticed a few things i'd like to add

  1. abstract measurement type for trajectories (abundance / occupancy)
  2. abstract landscape geometries, integration with SpatialGraphs.jl (as far as i can tell you can only use a grid at the moment?)
  3. integration with EcologicalNetworks.jl, define a set of consumer-resource relationships from an EN.jl metaweb
  4. integration with the new RasterDataSources.jl
  5. abstract environmental variables: at the moment, in Biodiversity/Habitats.jl, HabitatsUpdate.jl, and AbioticEnv.jl, etc. have lots of duplicate/nearly-duplicate code, e.g.
    
    function TempChange(eco::AbstractEcosystem, hab::ContinuousHab, timestep::Unitful.Time)
    val = hab.change.rate
    v = uconvert(K/unit(timestep), val)
    hab.matrix .+= v * timestep
    end
    function RainfallChange(eco::AbstractEcosystem, hab::ContinuousHab, timestep::Unitful.Time)
    val = hab.change.rate
    v = uconvert(mm/unit(timestep), val)
    hab.matrix .+= v * timestep
    end

which could be condensed if each environmental variable was a type that holds its unit.

happy to help with implementation of any/all 
claireh93 commented 3 years ago

Hi @gottacatchenall, all sound like good ideas! I'd be really happy if we could integrate with the other packages you mentioned in EcoJulia. As you say, there is lots of duplicate code that could be condensed in habitats, which I can take care of, but I'm not so familiar with the inner workings of packages like EcologicalNetworks.jl etc, so perhaps we could work together on those?

richardreeve commented 3 years ago

These all look good. I'm not completely sure what they all mean though - for instance, what would an "abstract measurement type for trajectories" look like? @claireh93 and I have also been talking about ways of dealing with 5 without any disruption (hopefully!). In any event, we probably need a project board and need to add in (at least) 5 individual issues rather than this mega-issue?

gottacatchenall commented 3 years ago

sounds good --- i can better define each of these items in individual issues/PRs, perhaps we should rename and move the repo to ecojulia fist to take advantage of their testing boilerplate before though?

claireh93 commented 3 years ago

Hi @gottacatchenall, now we have a project board, would you mind defining these as individual issues? Then we can get cracking on them all!

gottacatchenall commented 3 years ago

sounds good!