CellularPotts

Simulate biological cells

https://github.com/robertgregg/cellularpotts.jl

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 3 DOI reference(s) in README
  • Academic publication links
    Links to: nature.com, plos.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.7%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Simulate biological cells

Basic Info
Statistics
  • Stars: 22
  • Watchers: 1
  • Forks: 6
  • Open Issues: 0
  • Releases: 9
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

CellularPotts.jl

codecov CI

CellularPotts.jl is a Julia package designed to simulate behaviors observed in biological cells like division and adhesion. Users of this package can create 2D and 3D environments with any number of cell types, sizes, and behaviors. Simulations can be recorded and visualized as animations with the help of the Plots.jl package. The goal of this package is to create a flexible coding environment to explore how cell behaviors can coalesce into complex dynamics while still maintaining high performance. Compared to other excellent software for Cellular Potts modeling (e.g., Morpheus, Artistoo, CompuCell3D), CellularPotts.jl is unique in its approach for a few reasons:

  • CellularPotts.jl is written completely in Julia, avoiding the "two language problem"

    • This unites developers and users to one language, simplifies the code base, and makes customization easier.
  • The space cells occupy is modeled as a network/graph

    • Representing the model as a graph allows access to decades of graph theory research, for example:
    • Calculating articulation points to avoid cell fragmentation
    • Using graph partitioning algorithms to simulate cellular division
    • Avoiding cumbersome boundary conditions by adding edges that wrap around the defined space
    • Using graphical Laplacians to simulate diffusion
  • CellularPotts.jl can be composed with other Julia packages.

Quick Start

To create a basic Cellular Potts Model, you need to provide 3 pieces of information:

  1. What space will the cells occupy?

  2. What cells do you want to include in the model?

  3. What penalties do you want to encourage certain behaviors?

```julia

Install the package (if needed)

using Pkg; Pkg.add("CellularPotts")

Load in the package

using CellularPotts

Create a space (50×50) for cells to exist in

space = CellSpace(50,50; periodic=true, diagonal=true)

Describe the cells in the model

initialCellState = CellState( :Epithelial, #cell names 500, #size of cells 1, #number of cells positions = (25,25))

Add penalties to the model

penalties = [ AdhesionPenalty([0 20; 20 0]), VolumePenalty([5]) ]

Create a model object

cpm = CellPotts(space, initialCellState, penalties)

Record a simulation of the model

recordCPM("ReadMeExample.gif", cpm) ```

Want to Contribute?

If you want to suggest new features or improvements to make CellularPotts.jl better, feel free to submit an issue or pull request. Please also report any bugs you may stumble upon and I will try my best to fix them. I've tried to ensure that this package is as performant as possible, but I welcome any improvements you might have!

How to Cite

If you happen to use CellularPotts.jl in your research, feel free to cite our paper:

https://doi.org/10.1093/bioinformatics/btad773

@article{gregg2024cellularpotts, title={CellularPotts. jl: simulating multiscale cellular models in Julia}, author={Gregg, Robert W and Benos, Panayiotis V}, journal={Bioinformatics}, volume={40}, number={1}, pages={btad773}, year={2024}, publisher={Oxford University Press} }

Future Improvements

  • [ ] CellDivision!() currently cannot update custom cell state properties

  • [ ] Use Shape() to plots cells instead of heatmap (will this be slower?)

  • [ ] Use automatic differentiation to calculate cellular forces from the Hamiltonian

  • [ ] Use SVectors to store graph edges? 🤔

    • Only useful for spaces where all nodes are identical (e.g., periodic boundaries)
  • [x] Reduce heavy package dependencies using package extensions

    • [ ] Not using package extensions yet but some heavy dependencies were removed
    • [ ] Package extensions for DifferentialEquations.jl and Plots.jl
  • [ ] Separate tutorials from examples

  • [ ] Tutorial on how to create your own penalty (e.g. cell length to control cell shape)

  • [ ] Make adding cells easier

  • [ ] Make it easier to integrate PDE models (maybe Enzyme.jl?)

Owner

  • Name: Robert Gregg
  • Login: RobertGregg
  • Kind: user

Postdoctoral fellow at University of Pittsburgh

Citation (CITATION.bib)

@article{gregg2024cellularpotts,
    author = {Gregg, Robert W and Benos, Panayiotis V},
    title = {CellularPotts.jl: simulating multiscale cellular models in Julia},
    journal = {Bioinformatics},
    volume = {40},
    number = {1},
    pages = {btad773},
    year = {2023},
    month = {12},
    abstract = {CellularPotts.jl is a software package written in Julia to simulate biological cellular processes such as division, adhesion, and signaling. Accurately modeling and predicting these simple processes is crucial because they facilitate more complex biological phenomena related to important disease states like tumor growth, wound healing, and infection. Here we take advantage of Cellular Potts Modeling to simulate cellular interactions and combine them with differential equations to model dynamic cell signaling patterns. These models are advantageous over other approaches because they retain spatial information about each cell while remaining computationally efficient at larger scales. Users of this package define three key inputs to create valid model definitions: a 2- or 3-dimensional space, a table describing the cells to be positioned in that space, and a list of model penalties that dictate cell behaviors. Models can then be evolved over time to collect statistics, simulated repeatedly to investigate how changing a specific property impacts cellular behavior, and visualized using any of the available plotting libraries in Julia.The CellularPotts.jl package is released under the MIT license and is available at https://github.com/RobertGregg/CellularPotts.jl. An archived version of the code (v0.3.2) at time of submission can also be found at https://doi.org/10.5281/zenodo.10407783.},
    issn = {1367-4811},
    doi = {10.1093/bioinformatics/btad773},
    url = {https://doi.org/10.1093/bioinformatics/btad773},
    eprint = {https://academic.oup.com/bioinformatics/article-pdf/40/1/btad773/55399330/btad773.pdf},
}

GitHub Events

Total
  • Create event: 2
  • Commit comment event: 2
  • Release event: 1
  • Watch event: 2
  • Issue comment event: 1
  • Push event: 9
Last Year
  • Create event: 2
  • Commit comment event: 2
  • Release event: 1
  • Watch event: 2
  • Issue comment event: 1
  • Push event: 9

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 5
  • Total pull requests: 48
  • Average time to close issues: 4 months
  • Average time to close pull requests: 4 months
  • Total issue authors: 4
  • Total pull request authors: 3
  • Average comments per issue: 4.6
  • Average comments per pull request: 0.04
  • Merged pull requests: 23
  • Bot issues: 0
  • Bot pull requests: 43
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: about 13 hours
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • RobertGregg (2)
  • aminGhorbel93 (1)
  • PGimenez (1)
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (43)
  • RobertGregg (4)
  • BeastyBlacksmith (1)
Top Labels
Issue Labels
bug (2) good first issue (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 2 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 9
juliahub.com: CellularPotts

Simulate biological cells

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 2 Total
Rankings
Dependent repos count: 9.9%
Average: 29.4%
Forks count: 33.3%
Stargazers count: 35.6%
Dependent packages count: 38.9%
Last synced: 6 months ago