CIBC:Project:CardioWaveInterface

From NCRR Biomedical Software Development, Engineering, and Dissemination Wiki

Jump to: navigation, search

Contents

CardioWave Interface

Data organization

One of the key questions is how to organize the data. A model is more then a image with annotation. Hence a new representation is needed to generate more complicated models.

The idea is to use Bundles of Strings, Fields, and Matrices to represent a model. The reason for this is that the scheme is simplistic enough to be general, but it could theoretically be suitable to more modeling projects.

As bundles can be inserted into another bundle they can form complex hierarchies, they should hopefully provide a flexible enough platform for building models. Currently a series of modules have been generated in the Core of SCIRun to support this development.


Recent developments

(1) The Cardiowave package was split into two packages: ModelCreation and CardioWave. The reason for splitting the package is that many of the tools are more general and can possible be reused in BioPSE or in the CIBC center. The goal of this package is to provide general tools for module building. Currently the modules that were generated for this project live in this package, but they can be moved to other places if needed (any suggestions?)

To Do

(1) Clean up CardioWave package. All more general modules should go to the ModelCreation package or to the SCIRun core. The CardioWave package should only contain specific modules that communicate with CardioWave.

(2) Create a more general makefile for CardioWave, it needs dynamic compilation and we currently need to adapt it for each flavour of MPI and for each platform. The makefile of Duke does not work on any of our platforms.

(3) Design final interface. Pieces have been generated, but no coherent module structure is present.

(4) Create code to generate surfaces inside a mesh at which we representa membrane. At membranes one has an intrracellular and extracellular node, hence one needs to split a mesh into two pieces while keeping all the nodes. In this case nodes at the boundaries need to be doubled. This operation is the opposite of GatherFields. The module works by using the data at the elements to see how the mesh needs to be split in submeshes. Each submesh does not share any nodes but still contains the same elements and still fills the same space. The goal of this module is to use it to generate intra and extracellular meshes that fit together like a jigsaw puzzle. This module could take a segmented confocal image and split every segmented area into its own mesh. Lateron one can find which faces are at the border and one can link them face by face and connect them with a membrane model.

(5) Add code to figure out which faces link to neighboring faces in a mesh that has been split in discrete compartments. Probably code that is generated in this module can be used to fix GatherFields as well. This requires code to build an effective algorithm to find nodes that are close by (within a certain radius).

(6) Test module that computes the effective area/volume of the adjoining elements. To compute current strengths at nodes one needs to assign a volume or area to the node. This can be done based on the mesh by adding the effective area or volume of each adjoining element. This currently only works for linear elements.

(7) Upgrade CardioWave packages to use Higher Order Basis functions field classes.

Personal tools