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 #110

Open
5 tasks
MILeach opened this issue Jun 15, 2023 · 5 comments · May be fixed by #111
Open
5 tasks

Add subcellular element model #110

MILeach opened this issue Jun 15, 2023 · 5 comments · May be fixed by #111

Comments

@MILeach
Copy link
Contributor

MILeach commented Jun 15, 2023

As part of the BBR grant, we should add the subcellular element model to the core chaste library.

Existing Code

This work builds on partially complete code initially developed in 2013.

The original copy of the code is available on trac
A working copy is available in the Chaste/sem-project repository

Development Tasks

  • Update the existing project code in the working copy to build against current develop
  • Add new required functionality
  • Add tests for new functionality
  • Ensure subcellular element code meets required standards & is sufficiently tested
  • Create tutorial & documentation
@MILeach MILeach self-assigned this Jun 15, 2023
@MILeach MILeach linked a pull request Jun 15, 2023 that will close this issue
42 tasks
@AlexFletcher
Copy link
Member

AlexFletcher commented Jun 15, 2023

A brief overview of the code structure is provided in Section 6.2.3 of Dan Harvey's DPhil thesis.

It looks like Dan's approach is to create a class NodeBasedCellPopulationWithSemId inheriting from NodeBasedCellPopulation, where there is a 1-1 correspondence between nodes and cells, but not to actually use any cell functionality like division, growth, or death, so that cells aren't really thought of as 'actual' cells. Two NodeAttributes are then used to keep track of whether each node is actually part of an 'actual' cell's nucleus (mIsParticle) and to keep track of which 'actual' cell it belongs to (mIsRegion).

I guess this was done to limit the amount of new coding required, and because for the use cases considered by Dan Harvey and others, cell behaviours like division weren't necessary. I think a more general approach, allowing for cell division and cell death, will require a new cell population that maintains a correspondence between each cell and multiple nodes (as is the case already in VertexBasedCellPopulation and - once it is in the develop branch - ImmersedBoundaryCellPopulation).

With this new approach, I can see a few minor edits needed to the existing mechanics code, e.g.

  • in SemForce::AddForceContribution(), to find which cell owns each node, instead of calling GetRegion() we'd want to get its global index then call GetCellUsingLocationIndex() on the cell population;
  • in SemParameterScaler::ScaleSpringConstant(), instead of calling GetNumElements() with an semIndex, we'd instead want to get the number of nodes owned by a cell (elsewhere in the Chaste code, we'd do this by interrogating some kind of mesh element associated with the cell, so it depends on whether we'd want to stick to using NodesOnlyMesh in this new approach).

Then more effort would be required to implement things like cells dividing, growing/shrinking, dying, and interacting with any PDE state variables.

@AlexFletcher AlexFletcher added this to the BBR milestone 1.1 milestone Jun 28, 2023
@AlexFletcher AlexFletcher self-assigned this Jun 28, 2023
@AlexFletcher
Copy link
Member

@AlexFletcher
Copy link
Member

@AlexFletcher
Copy link
Member

Relevant recent paper by Dokmegang et al: https://www.biorxiv.org/content/10.1101/2020.06.08.140269v4

@fcooper8472
Copy link
Member

The other SEM paper: https://doi.org/10.1088/1478-3975/8/4/045007

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants