Electric ImageΒΆ

The archetypal electric fish model is the field perturbation from a prey-like object. We will implement this here

import matplotlib.pyplot as plt

from fish2eod import (
    BaseFishModel,
    Circle,
    ElectricImageParameters,
    compute_transdermal_potential,
)


class PreyClass(BaseFishModel):
    def add_geometry(self, **kwargs):
        prey = Circle((3, 2), 0.5)

        self.model_geometry.add_domain("prey", prey, sigma=1)


model = PreyClass()
EIP = ElectricImageParameters(domains=("prey",), value=model.WATER_CONDUCTIVITY)
parameters = {"fish_x": [-15, 15], "fish_y": [0, 0], "image": EIP}
model.compile(**parameters)
model.solve(**parameters)

organ, e_image = list(compute_transdermal_potential(model))[0]

plt.plot(organ.left_arc_length, e_image.left_tdp)
plt.plot(organ.right_arc_length, e_image.right_tdp)

plt.legend(["Left Image", "Right Image"])

(Source code, png, hires.png, pdf)

../../_images/example_prey_image.png