verfishd

Library for Simulations of Vertical Fish Distributions

https://github.com/marine-data-science/verfishd

Science Score: 67.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 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Library for Simulations of Vertical Fish Distributions

Basic Info
  • Host: GitHub
  • Owner: marine-data-science
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 766 KB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 1
  • Releases: 6
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

Logo of VerFishD

VerFishD is a library for simulating vertical fish distribution under the influence of physical stimuli.

PyPI - Version Tests - Status DOI

Concept

VerFishD uses PhysicalFactor objects to influence fish movement. You can implement this base class to define your own physical factors, such as temperature, light, oxygen, etc. The next step is to load a StimuliProfile, which represents a collection of specific stimulus values. The migration speed function determines the final vertical movement of the fish. The sign of this function determines the movement direction, while the absolute value indicates the percentage of fish that will move. These values are combined to simulate the vertical distribution of fish over time.

Installation

VerFishD is available on PyPI and can be installed using Poetry or pip:

bash poetry add verfishd

or with pip:

bash pip install verfishd

Usage

Here is a simple example of how to use VerFishD:

```python

Define a custom PhysicalFactor

class Temperature(PhysicalFactor): """ A class representing a temperature factor.

Parameters
----------
weight : float
    The weight is used to scale the factor's contribution to the evaluation function E.
"""

def __init__(self, weight: float):
    super().__init__("temperature", weight)

def _calculate(self, value: float) -> float:
    match value:
        case _ if value > 5:
            return 0.0
        case _ if value < 4:
            return -1.0
        case _:
            return value - 5.0

Create a Stimuli Profile including depth and temperature

stimuledataframe = pd.DataFrame({ 'depth': [0.0, 1.0, 2.0, 3.0, 4.0, 5.0], 'temperature': [7.0, 6.0, 5.0, 5.4, 4.0, 3.9] }) stimuli = StimuliProfile(stimuledataframe)

Create the temperature factor

temperature_factor = Temperature(1.0)

Define a very simple migration speed function

migration_speed = lambda x: x

Create the model

model = VerFishDModel('Example', stimuli, migrationspeed, [temperaturefactor])

Simulate the model for 30 steps

model.simulate(800)

model.plot()

plt.show() ```

This example defines a temperature factor, creates a stimuli profile with temperature data over depth, initializes the model with this profile and factor, runs a simulation over 800 time steps, and finally plots the results.

Features

  • Modularity: Implement custom physical factors that influence fish movement.
  • Flexibility: Load different stimuli profiles to simulate various environmental conditions.
  • Visualization: Plot functions to display simulation results.

Example Plot

Example plot of the simulation

Running Tests

To run tests, use:

bash pytest

Ideas for the future

  • [ ] Combine multiple Stimuli Profiles to do a simulation for a whole day
  • [ ] Algorithm to determine if simulation can end?

License

This project is licensed under the MIT License. See the LICENSE file for details.

Owner

  • Name: Marine Data Science - Uni Rostock
  • Login: marine-data-science
  • Kind: organization
  • Location: Germany

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Meischner"
  given-names: "Jan"
title: "VerFishD"
version: 0.2.4
doi: 10.5281/zenodo.15736407
date-released: 2025-06-25
url: "https://github.com/marine-data-science/verfishd"

GitHub Events

Total
  • Release event: 6
  • Delete event: 4
  • Push event: 54
  • Pull request event: 2
  • Create event: 9
Last Year
  • Release event: 6
  • Delete event: 4
  • Push event: 54
  • Pull request event: 2
  • Create event: 9

Issues and Pull Requests

Last synced: 10 months ago

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 17 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 7
  • Total maintainers: 1
pypi.org: verfishd

Simulate the vertical fish distribution influenced by physical stimuli

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 17 Last month
Rankings
Dependent packages count: 9.7%
Average: 32.1%
Dependent repos count: 54.6%
Maintainers (1)
Last synced: 10 months ago