GithubHelp home page GithubHelp logo

cancermodeling / angiogenesis3d1d Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 1.0 498 KB

3D-1D tumor growth model for simulation of angiogenesis

License: Boost Software License 1.0

CMake 2.52% Shell 0.15% C++ 93.89% Python 3.44%
angiogenesis tumor-growth cancer-research multi-dimensional-models computational-modeling vascular-networks vascular-flow

angiogenesis3d1d's Introduction

Angiogenesis3D1D

CircleCI GitHub release GitHub license GitHub issues GitHub repo size

Table of contents

Introduction

3D-1D tumor growth model for simulation of angiogenesis. The code is used to generate results in the papers

Marvin Fritz, Prashant K. Jha, Tobias Köppl, J. Tinsley Oden, and Barbara Wohlmuth. Analysis of a new multispecies tumor growth model coupling 3D phase-fields with a 1D vascular network. Nonlinear Analysis: Real World Applications 61 (2021): 103331. doi.

Marvin Fritz, Prashant K. Jha, Tobias Köppl, J. Tinsley Oden, Andreas Wagner, and Barbara Wohlmuth. Modeling and simulation of vascular tumors embedded in evolving capillary networks. Computer Methods in Applied Mechanics and Engineering (2021), 384, 113975. doi.

Examples

Example of tumor growth with two vessels (artery and vein) is provided in the directory two_vessels. Python scripts are used to create various input files.

To run the example, first copy the examples directory inside the build directory. In shell script, we use relative path to obtain the executible. To run the example from other directory, one needs to modify the run script and provide the path to binary directory in the variable EXEC_DIR in run script. After the examples directory is copied, cd to the two_vessels directory and run the example using

python3 two_vessels.py run

Above will create following input files used in the code:

  • input.in - File that provides final time, mesh size, and values of parameters in the model
  • tum_ic_data_tag.csv - Provides the location and size of tumor cores
  • two_vessels_tag.dgf - Provides the initial vessel network

Installation

Dependencies

Core dependencies are:

  • cmake (3.10.2 or above)
    • recommend to install using apt-get
  • vtk (7.1.1)
    • recommend to install using apt-get
    • required to output simulation results in .vtu format
  • petsc (3.13.3 or above)
    • required to build libmesh
    • see further below on how to build this
  • libmesh (1.5.0 or above)
    • core library
    • see further below on how to build this
  • aixlog (1.2.4)
    • included as external library in the code
    • for logging
  • fast-cpp-csv-parser (1.2.4)
    • included as external library in the code
    • for reading csv file
  • gmm
    • included as external library in the code
    • provides framework to solve linear systems associated to the 1D networks

Dependencies for running the examples:

  • python3
    • required to run the test python scripts
  • numpy
    • required to run the test python scripts

Building the code

Assuming all dependencies are installed in global path (/usr/local/ etc), we build the code using

git clone https://github.com/CancerModeling/Angiogenesis3D1D.git

cd Angiogenesis3D1D && mkdir build && cd build

cmake   -DEnable_Documentation=ON \
        -DEnable_Tests=ON \
        -DCMAKE_BUILD_TYPE=Release \
        ..

make -j 4

ctest --verbose

If libmesh and petsc are installed at custom paths, we will do

git clone https://github.com/CancerModeling/Angiogenesis3D1D.git

cd Angiogenesis3D1D && mkdir build && cd build

cmake   -DLIBMESH_DIR="<libmesh install path>" \
        -DPETSC_LIB="<petsc install path>/lib" \
        -DEnable_Documentation=ON \
        -DEnable_Tests=ON \
        -DCMAKE_BUILD_TYPE=Release \
        .. 

make -j 4

ctest --verbose

Recommendations for quick build

  1. Install most of the dependencies using apt-get:
sudo apt-get update 
  
sudo apt-get install -y build-essential ubuntu-dev-tools \
  wget curl lzip \
  cmake gfortran \
  libopenmpi-dev openmpi-bin \
  libboost-all-dev libvtk7-dev \
  liblapack-dev libblas-dev \
  doxygen doxygen-latex graphviz ghostscript \
  python3-pip 

# pyvista and pandas are not required, so they can be excluded
pip3 install numpy
  1. Build petsc and libmesh. You can follow the steps used in building the dockerfile. We plan to include seperate shell script to install petsc and libmesh.

  2. Use instructions in previous section to build Angiogenesis3D1D.

Docker

For circle-ci testing, we use docker images prashjha/angio-base-bionic and prashjha/angio-base-focal of ubuntu 18.04 and 20.04 with petsc and libmesh installed. The associated dockerfiles can be found here.

In Packages, docker images of Angiogenesis3D1D is provided.

Citations

If this library was useful in your work, we recommend citing the following articles:

Fritz, M., Jha, P. K., Köppl, T., Oden, J. T., Wagner, A., & Wohlmuth, B. (2021). Modeling and simulation of vascular tumors embedded in evolving capillary networks. Computer Methods in Applied Mechanics and Engineering, 384, 113975. doi.

Fritz, M., Jha, P. K., Köppl, T., Oden, J. T., & Wohlmuth, B. (2021). Analysis of a new multispecies tumor growth model coupling 3D phase-fields with a 1D vascular network. Nonlinear Analysis: Real World Applications, 61, 103331. doi.

Developers

angiogenesis3d1d's People

Contributors

prashjha avatar wagnandr avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.