Source code for tyssue.behaviors.monolayer.basic_events
"""
Small event module
=======================
"""
from ...utils.decorators import cell_lookup
from .actions import contract
default_contraction_spec = {
"cell_id": -1,
"cell": -1,
"side": "all",
"contractile_increase": 1.0,
"critical_area": 1e-2,
"max_contractility": 10,
"multiple": False,
"contraction_column": "contractility",
"unique": True,
}
# Side can be "apical", "basal", "lateral", "all"
[docs]@cell_lookup
def contraction(monolayer, manager, **kwargs):
"""
Single step contraction event
"""
contraction_spec = default_contraction_spec
contraction_spec.update(**kwargs)
cell = contraction_spec["cell"]
list_face_in_cell = monolayer.get_orbits("cell", "face")
# Pick face id in function of chosen side
faces_id = (
monolayer.face_df[
(monolayer.face_df.index.isin(list_face_in_cell[cell]))
& (monolayer.face_df.segment == contraction_spec["side"])
]
.index[0]
.values
)
for f in faces_id:
if (monolayer.face_df.loc[f, "area"] < contraction_spec["critical_area"]) or (
monolayer.face_df.loc[f, contraction_spec["contraction_column"]]
> contraction_spec["max_contractility"]
):
return
contract(
monolayer,
f,
contraction_spec["contractile_increase"],
contraction_spec["multiple"],
contraction_spec["contraction_column"],
)