Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add subcellular element model #111

Draft
wants to merge 6 commits into
base: develop
Choose a base branch
from
Draft

Add subcellular element model #111

wants to merge 6 commits into from

Conversation

MILeach
Copy link
Contributor

@MILeach MILeach commented Jun 15, 2023

Subcellular Element Model

Aim

This pull request will add subcellular element functionality to chaste and close #110

Features

  • Generation of cells with or without boundaries
  • Ability to model complex cell shapes

New Code

  • SemElement
  • SemMesh
  • SemMeshReader
  • SemMeshWriter
  • SemBasedCellPopulation
  • SemCellsGenerator
  • SemInterCellularForce
  • SemIntraCellularForce

To Do

  • Get existing code building
  • Implement CPU version of SEM in Chaste
    • Clarify algorithm
    • Map to chaste, i.e. nodes, elements etc.
    • Implement basic algorithm
    • Add supporting features, e.g. mesh writers, readers
  • Add tests
  • Tutorial
  • Documentation
  • Integrate FLAME GPU with the chaste build process
  • FLAME GPU implementation of SEM
  • Plan for remaining work
  • Update github issue / pull request

Subcellular Element Method Overview

The Subcellular Element Method (SEM) is a lagrangian (i.e. particle based rather than grid based) method for simulating cells & cell shapes. An individual cell is modelled as a collection of particles which interact with each other via two potential fields, one modelling inter-cellular forces, and the other modelling intra-cellular forces.

Each particle has an associated interaction radius and different functions/coefficients can be used to modify the properties of the cells. To support interaction between cells, each particle has an identifier stating which cell it is a part of.

Interaction forces are summed over each other particle within the interaction range. Particles with the same cell id use the intra-ceullular force model, and particles with differing cell ids use the inter-cellular force model.

Mapping SEM to chaste

Components

  • Each SEM particle will correspond to a chaste node (derived from node)
  • Each cell will correspond to a chaste SemElement (derived from element)
    • Has a unique cell id
    • Maintains a set of ‘layers’ of particles. Used to determine force interactions
  • A collection of cells will correspond to a chaste SemBasedCellPopulation (derived from off lattice cell population)
  • SemCellsGenerator - generates cells
  • SemMesh - keeps track of elements
  • SemInterCellularForce
    • By default produces interactions between all particles of differing cell-id
    • Mode to specify interaction between specific cell-ids and/or particular ‘layers’
    • Multiple forces can be enabled at once
  • SemIntraCellularForce
    • By default used for all intra-cellular interactions
    • Possible to specify that the force is to be used for specific layers
    • Multiple forces can be enabled at once
  • Relevant implementations within:
    • Cell writers
    • Population writers
    • Serialisation
    • MeshWriter
    • MeshReader
  • Cell Division
  • Cell Death

Notes

Implementation uses the concept of 'interaction layers'. Forces can be specified to act between specific layers.

Update 23/02/2024

  • Basic core functionality implemented, i.e:
    • Sem cell population can be created
    • Intra-cellular forces work for a simple force model. This should be improved
    • Inter-cellular forces can be added but do not currently generate forces.
    • Some writers work, others need implementation details adding
    • Results visually verified
    • There are various print statements for development/debugging currently committed in this branch

Next Steps

  • Implement inter-cellular force model
  • Create tests for each class
  • Go back over classes - some methods have been commented out or need functionality adding
  • Add mesh readers/writers & serialization
  • Check functionality for cell division / cell death is working
  • Identify how to sensibly test a representative simulation

@AlexFletcher AlexFletcher added this to the BBR milestone 1.1 milestone Jul 4, 2023
@AlexFletcher AlexFletcher self-assigned this Jul 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add subcellular element model
2 participants