Download Software Modeling of the Complement System and its role in

Document related concepts

Monoclonal antibody wikipedia , lookup

Molecular mimicry wikipedia , lookup

Hygiene hypothesis wikipedia , lookup

Phagocyte wikipedia , lookup

Immune system wikipedia , lookup

Adoptive cell transfer wikipedia , lookup

Adaptive immune system wikipedia , lookup

Immunosuppressive drug wikipedia , lookup

Polyclonal B cell response wikipedia , lookup

Cancer immunotherapy wikipedia , lookup

Immunomics wikipedia , lookup

Psychoneuroimmunology wikipedia , lookup

Innate immune system wikipedia , lookup

Complement system wikipedia , lookup

Transcript
Software Modeling of the Complement System
and its role in Immune Response
by
Aparna Srikantaswamy Bellur
2
© Copyright By Aparna Srikantaswamy Bellur 2004
All Rights Reserved
3
This thesis for the Master of Science degree by
Aparna Srikantaswamy Bellur
has been approved for the
Department of Computer Science
by
__________________________________
Advisor: Dr. Jugal Kalita
__________________________________
Committee member: Dr. M. Karen Newell
__________________________________________________
Committee member: Dr. Maria Augusteijn
___________________
Date
Bellur, Aparna Srikantaswamy (M.S., Computer Science)
4
Software Modeling of the Complement System and its role in Immune Response.
Thesis directed by Associate Professor Dr. Jugal Kalita.
The complement system refers to a series of proteins circulating in the blood that work to
complement the work of antibodies in destroying bacteria. These proteins circulate in an
inactive form, but in response to the recognition of molecular components of the
pathogenic micro organism, they become sequentially active, working in a manner where
in the binding of one protein promotes the binding of the next protein in cascade resulting
in the lysis of cells, be they bacteria, infected erythrocytes or nucleated cells.
This thesis implements, using software, the activation of the complement system by all
the three pathways in the immune system and demonstrates the lysis of bacterial cells. It
also gives the statistics of the total number of complement components involved and the
number of bacterial cells destroyed. The software implementation also involves other
beneficial innate defense functions carried out by the complement pathways, namely
chemotactic attraction of phagocytes to the infection site, promotion of opsonization,
triggering inflammation and removal of immune complexes from the circulation. Disease
scenarios involving different kinds of bacteria have been modeled. The software has been
written in C++ language. This is not a mathematical model instead object oriented
programming has been used to develop a random simulation. The advantage of this
approach is that an algorithm need not be derived in order for the model to work.
5
I dedicate this thesis to my mother Rathna, who inspired me to persevere and think all the
time.
ACKNOWLEDGEMENTS
6
I am indebted to my supervisor Dr. Jugal K. Kalita for helping me define my topic in this
thesis and having been of invaluable assistance in my endeavors. He has given me
constant support and guidance through out. I would like to thank Dr. Karen Newell and
Dr. Maria Augusteijn for agreeing to be my thesis committee members. Dr. Karen Newell
was especially helpful in giving me a good insight into Immunology and for spending a
lot of her invaluable time with me overseeing the progress of the thesis. She also
recommended me to approach Dr. Patricia Giclas who is an expert in the field of
complement system. I thank Dr. Giclas for her time and advice. I would like to thank Dr.
Maria Augusteijn profoundly, for her time and guidance. I would like to thank the
Graduate School of UCCS for all the facilities provided to complete working on this
thesis and for access to the labs at late hours. They have an unmatched library as well.
I would like to thank my friends Anilkumar Krishanasari, Kiran Adimulam and
Priyadarshini Selvam who have worked on other aspects of the simulation. A special
thanks to Kaushal Chandrasekhar for guiding me through the initial design phase of this
thesis. I thank him for his valuable suggestion to do a thesis instead of a masters project.
Last but not the least I would like to thank my father B.K. Srikantaswamy and my sister
Jaiwanthi Mohan who gave me all the support and encouragement I needed. I will be
always grateful and thankful to my eighteen months old, cute little daughter Gowri, for
being such a good kid and letting me finish my thesis. Without her cooperation, I
absolutely could not have made it. Very special thanks to my husband Vijay Simha for
supporting me financially and morally.
7
CONTENTS
CHAPTER
I.
INTRODUCTION…..……………………………………………………....…..1
Immune system……………………………………….....1
Complement system………………………………….....3
Inflammation……………………………………….........6
Autoimmunity…..………………………………….........6
Purpose of the Study ……………………………………………7
Scope of the Study………………………………………………7
Data and other Limitations……………………………...9
II.
REVIEW OF THE LITERATURE………….………………………….....…..11
III.
SIMISYS OVERVIEW…..……..…………….………………………….....…14
Introduction to SIMISYS 0. 3 …………………………14
Software Architecture……….…………………………14
Software details…….………………………………….17
The Modeler Entities…………………………..17
Class BasicCell………………….……..17
Class ImmuneCell……………………..18
Class Bacteria………..…….…………..19
Class Macrophage.……………………19
8
Class Neutrophil……….….…………...19
Class THelper…..….…….…………….20
Class Bcell…………….…….…………21
Classes LymphVessel, LymphNode and
BloodVessel………………………..22
The Matrix……………………………………..22
Class Grid.…………………………….23
Class GridWrapper…………...……….25
The Visualization Engine…..………..………...25
IV.
SIMISYS 0.4……………….……..…………….…….…………………….…27
Implementation Overview……………………..……....27
V.
LIVER…….……….………..……..…………….…………………………….30
Introduction……………..…………………………………30
Class Liver….…..……………………..……..……………30
Methodology……………………………..………………...31
VI.
COMPLEMENT SYSTEM…………………….………………….………….34
Pathways of activation…………………..……………..34
Classical Pathway……………………………...34
Lectin Pathway…………………………………36
Alternative Pathway…………………..,…….…36
Complement system design and flow…………..………38
Class complementsystem………………………..……..40
Methodology……………………………………..….…41
VII.
ERYTHROCYTES………….…..…………….…………………..….............59
9
Introduction…………………………..…………….…..59
Class Erythrocyte……….……………..………………..60
Methodology……………………………………………60
VIII.
MAST CELLS……………….…..……..……….…………..…………………64
Introduction…………..…..…………..…………….……64
Class MastCell..………………………..………………..64
Methodology………………………………………….…65
IX.
KUPFFER CELLS….………….…..……..….……………………..….66
Introduction……….…….…..…………..……………….66
Class Macrophage..…….……………………..………….66
Methodology………………………….…………………67
X.
COMPLEMENT DEFICIENCIES AND DISEASE SCENARIO
SIMULATION……..………………………………………………….68
Introduction………………..…………..……………..….68
Systematic Lupus Erythrmatosus..……..…………….….68
Theories explaining origins of autoimmunity……….69
Autoimmunity and Complement deficiency.......……70
Apoptosis……………………………………….…...70
Autoantibodies, autoantigens and apoptosis in SLE…71
SLE disease scenario simulation.………………....….71
Neisseria meningitidis………….......…………..….…….73
Virulence Factors……….…………..………..………73
Host defenses…………...…………..………..………74
10
Late complement components deficiencies disease
scenario………………………………………………74
XI.
EXTENSIONS TO OTHER CLASSES….….……………………..…76
Class Bacteria………………..………..…..……………76
Class Macrophage …….....…………..…..…………….77
Methodology of class Macrophage…………….77
Class Neutrophil… ………….....……………….……...78
Class BloodVessel. ………….....…………..…….……78
Methodology of class BloodVessel……………78
XII.
RESULTS ANALYSIS………..….....……..….……….………………....…..80
Graph_1: Classical, Alternative and Lectin pathways…81
Graph_2: Classical, Alternative and Lectin pathways…82
Graph_3: Lectin pathway………………………………83
Graph_4: Classical pathway……………………………84
Graph_5: Alternative pathway…………………………85
Graph_6: C3 deficiency…………………..……………86
Graph_7: SLE scenario simulation…………………….87
Graph_8: Late complement deficiency.…………..........88
XIII.
INFERENCES AND CONCLUSIONS…………………………….89
GLOSSARY.……………………………….…………………………..91
BIBLIOGRAPHY……………………………………………………...93
11
FIGURES
Figure
1.
Activation and functionality of Complement…………….……….……………..4
2.
Software Architecture Diagram of SIMISYS……….……………….…………15
3.
GUI to set the parameters for Bacteria………….…………………….………..16
4.
Class hierarchy of SIMISYS 0.3….……………………….………….………..18
5.
Grid structure SIMISYS 0.3……………….……..………………………...…..24
6.
Liver design and its role……………………………………………….………27
7.
SIMISYS 0.4 Class Hierarchy……………………………………….………...28
8.
SIMISYS 0.4 Grid Design……………………………………………….....….29
9.
File input.xml……………………………………………………………….……………….31
10.
Components involved in different pathways…………………………..………35
11.
Complement system design and flow………………………………….………38
12.
Character array representing signature of C3b…………………………………42
13.
Complement system object refrerencing Grid through an entity………………46
14.
Character array holding CR1 receptor of Erythrocyte entity..…………….…...60
15.
Complement of CR1 receptor matching with C3b signature.…….……………62
16.
4 bit string signature of normal EpithelialCell entity……..…….……………...72
17.
6 bit string signature of apoptotic EpithelialCell entity……..…….……………72
18.
Classical, Lectin and Alternative pathways……………………….……………81
12
19.
Classical, Lectin and Alternative pathways ………………………….……...82
20.
Lectin pathway…………………………………………………………………83
21.
Classical pathway………………………………………………………………84
22.
Alternative pathway……………………………………………………………85
23.
C3 deficiency…………………………………………………………………..86
24.
SLE scenario ………….……………………………………………………….87
25.
Late complement deficiency…………………………………………....……...88
TABLE
Table
1.
Bacteria signature generation……………………………………………………76
13
CHAPTER I
INTRODUCTION
Immune system
Any immune response constitutes recognition of the pathogen or other foreign material
and the mounting of a reaction against it to eliminate it. An antigen is recognized as
foreign when epitopes of that antigen bind to B cells and T cells by means of epitopespecific receptor molecules, whose shapes are complementary to that of the epitope. The
B cell receptor on the surface of a B cell is an antibody molecule that is called a surface
immunoglobulin [1].
Essentially the immune response can be categorized as innate immune response and
adaptive immune response.
The innate immune system is a less specific component of the immune system and forms
the first line of defense against infection from foreign microorganism. This is the
immunity one is born with. The adaptive immune system is the more specific component
of the immune system and is capable of specifically targeting and eliminating a foreign
pathogen. Adaptive immune system is capable of self and nonself recognition [1]. It is
capable of remembering the pathogen and can build a fight against the intruder
preventing it from causing disease later.
Adaptive immune response improves by repeated exposure to a given infection and
14
involves:
•
Antigen presenting cells (APCs) such as macrophages and dendritic cells.
These phagocytic cells are responsible for presenting antigens to T cells and B cells to
initiate both antibody mediated and cell mediated acquired immune responses [1].
•
Production of cytotoxic or killer T cells [1].
•
The activation and proliferation of antigen-specific lymphocytes such as T cells and B
cells [1].
•
Production of molecules like antibodies and cytokines [1].
However, the liability to the specificity of adaptive immune response is that only a few B
cells and T cells in the body recognize any one foreign epitope. These few cells then must
rapidly multiply in order to produce enough cells to stage a defensive attack against that
particular epitope which usually takes several days. This duration of time lets the
pathogen to cause considerable harm and hence innate immunity is very essential as the
first line of defense [1].
Innate immunity however does not specifically recognize every possible antigen. It
recognizes a few highly conserved structures called pathogen associated molecular
patterns present in many different microorganisms. The immune cells have pattern
recognition receptors complementary for these common pathogen associated molecular
patterns and hence there is an immediate response against the invading pathogen.
Pathogen associated molecular patterns can also be recognized by a series of soluble
pattern recognition receptors in the blood that function as opsonins and initiate the
15
complement pathways.
Some of the cells and molecules involved in the innate immune response are:
•
Phagocytic cells like neutrophils and macrophages [1].
•
Natural killer cells or NK cells [1].
•
Mast cells, basophils, and eosinophils, which release inflammatory mediators, like
histamine [1].
•
Molecules like complement proteins and cytokines [1].
Many of the molecules involved in innate immune response posses the ability of pattern
recognition to recognize a given class of molecules. Since certain types of molecules are
unique to foreign microorganisms and never found in humans the ability to immediately
recognize and attack the invading pathogens displaying such molecules is an essential
feature of innate immunity. Molecules with pattern recognition ability may be soluble,
like the complement system components or they may be cell-associated receptors [1, 2].
Complement System
•
The complement system is part of the innate immune system and forms the basis
of antibody mediated immunity. Apart from defending against bacterial infection,
it has other physiologic activities like bridging innate and adaptive immunity,
causing inflammatory response and disposing off immune complexes as described
in Figure 1. Complement was first identified as a heat sensitive principle found in
the blood serum that complemented antibodies in destroying bacteria [1]. The
16
nomenclature follows the historical order of discovery of the proteins. There are
around 30 complement proteins in the serum circulating in an inactive form [1]. A
complement pathway is a biochemical process which is initiated after the
stimulation of a particular component by its stimulus and proceeds in a pattern of
sequential activation which produces an expanding cascade of activity till the
target cell is lysed.
CLASSICAL PATHWAY
Antibody Antigen complex
ALTERNATIVE PATHWAY
Pathogen Surface
LECTIN PATHWAY
Mannose Groups
Complement Activation
Trigger inflammation
Opsonization of
pathogens
Lysis of pathogen cells and
clearing immune complexes
Figure 1 - Activation and functionality of Complement
The three pathways of activation of the complement system [1] are:
•
Classical pathway
•
Lectin pathway, and
•
Alternative pathway
17
All the pathways of activation produce a key enzyme called C3 convertase. C3
convertase cleaves C3 into C3a and C3b [1, 2].
Normally the larger fragment is
designated with a b attached to the component name and the smaller is designated with an
a attached. All of these three pathways essentially converge at a particular stage in the
cascade and produces a common complex called C5 convertase which starts a new set of
biochemical reactions ultimately attacking and lysing the target cells. This terminal
process is called the Membrane attack pathway or the Lytic pathway, as it is responsible
for lysis [1, 2]. The membrane attack complex forms a large channel through the
membrane of the target cell, enabling ions and small molecules to diffuse freely across
the membrane [1]. The activity can be compared to punching a pinhole into a balloon
filled with water.
The classical pathway was the first to be discovered and represents a more recently
evolved association with adaptive immunity since the initiation of complement cascade in
this pathway is caused by the binding of an antibody to an antigen on the surface of the
target cell. Whereas the alternative and lectin pathways provide non-specific innate
immunity which do not require any antibody [1, 2].
Inflammation
18
Tissue damage caused by a wound or by an invading pathogenic microorganism results in
a sequence of events collectively known as the inflammatory response. A molecular
component of a microbe, such as Lipopolysaccharide (LPS) found in the cell wall of a
a gram negative bacterium is good enough to trigger an inflammatory response. An
inflammatory response is depicted by three major events like
a. Vasodilation – An increase in the diameter of blood vessels of nearby capillaries
occurs as the vessels that carry blood away from the affected area constrict, resulting in
a swelling of the capillary network. Because of these engorged capillaries there is
tissue redness and an increase in tissue temperature [1].
b. An increase in capillary permeability facilitates an influx of fluid mainly blood and
hence immune cells from the engorged capillaries into the tissue [1].
c. Influx of phagocytic cells from the capillaries into the tissues is facilitated by the
increased permeability of the capillaries [1].
Autoimmunity
In certain individuals, the immune system malfunctions by losing its sense of self and
nonself, which permits an immune attack upon the host. Experimental evidence has
revealed that not all self reactive lymphocytes are deleted during T cell and B cell
maturation. Instead, normal healthy individuals have been shown to possess mature self
reactive lymphocytes in circulation. The presence of these self-reactive lymphocytes in
the circulation does not necessarily lead to autoimmune reactions. However, their activity
must be regulated in normal individuals through clonal anergy or clonal suppression. A
breakdown in this regulation can lead to activation of self reactive clones of T cells or
19
B cells, generating humoral or cell mediated responses against self or auto antigens [1].
Purpose of the Study
The main purpose of this study is to design and implement a software model simulating
the different pathways of the complement system activation and to evaluate the
performance of each one of them in their fight against an attack by bacteria. Another
important objective of this software implementation is to create a working computer
model capable of simulating beneficial innate defense functions carried out by the
complement pathways, namely chemotactic attraction of phagocytes to the infection site,
promotion of opsonization, lysis of bacterial cells, triggering inflammation and removal
of immune complexes from the circulation. This study should facilitate the simulation of
disease scenarios involving genetic deficiency and secondary deficiency of complement
components. This work should be a helpful tool in a distributed computer architecture
which should be able to hold and process large amounts of data and simulate real disease
scenarios or behavior of the human immune system.
Scope of the Study
The software model has been implemented using object oriented C++ language on Red
Hat Linux 9.0. It has a multithreaded architecture based on pthreads [6]. The graphics are
displayed using Simple DirectMedia Layer (SDL) version1.2 [37], which is a cross
platform multimedia library designed to provide low level access to keyboard, mouse,
and 3D hardware via OpenGL and 2Dvideo frame buffer. SDL is written in C, but works
with C++. Since XML is simple, has a very flexible text format and is designed to
20
meet the challenges of large scale data, an XML file has been used to hold different types
of complement components, keeping in mind that the system will evolve over time. The
Iksemel parser available from the Jabber project at http://ikesemel.jabberstudio.org has
been used to parse this XML file. Iksemel is an XML parser library. It is coded in ANSI
C and is highly portable.
The resulting software model is able to simulate an effective defense mechanism by
the immune system with the aid of the complement system against a bacterial attack or
infection. This software model explores the different pathways of complement system
and is able to model disease scenarios. This software model is integrated into SIMISYS
version 0.3 [22]. This software package is given the title SIMISYS version 0.4 and
includes a linear graph, depicting the results of the simulation being displayed on a small
panel on the screen. This feature can be turned on or off by the user. A console output
gets displayed simultaneously indicating the activated pathway, all the complement
system objects involved in it, the bacteria concentration, etc., on the terminal. This
software model allows the user to be able to zoom in and zoom out using the respective
keys on the keyboard. There are three different screens, each representing a different
region of the human body. These are the main screen representing the tissue, a second
screen representing the activities by the lymphnode object and a third screen displaying
the activities carried out by the liver object. The ‘T’ key on the keyboard enables one to
toggle from one screen to another. Most of the operations carried out in this modeling are
string based operations. Pattern recognition through substring recognition and matching
of the epitope or signature of each object is the main idea used for movement,
21
opsonization and immune complex clearance mechanisms.
Data and other Limitations
In a real immune defense system, the number of cells involved is very large. However,
this software model can simulate to a maximum of around 8000 to 10000 cells totally,
including the bacterial cells and around 16000 to 20000 complement system components.
The reason this simulation can accommodate more number of complement system
objects than the immune cells is that the complement system components free themselves
from their respective grid positions once they encounter a target cell. Whereas the
immune cells even after encounter with the bacterial cells, go on to stay in the grid until
they complete their lifespan. A grid position is the physical location of an object in the
grid. The results may not be as expected all the time. One of the reasons may be due to
the random positioning of the cells and the complement system components. If the grid is
heavily loaded with complement system components the cleaving activity of certain
components becomes very slow and hence exhibits slow reaction, or sometimes the
system crashes. If the grid is heavily loaded with cells, then the cells won’t have a free
movement in the grid as it gets cluttered. In this software implementation, the author has
not been fully successful in trying to adapt the real behavior of the immune system and
complement system components into programming. The author has made some
simplifying assumptions about the complement system and immune system players, and
the communications between the two, and has implemented them at a high level of
abstraction. By doing this it has enabled the author to focus on specific issues in the
complement system and its role in the immune response. For instance in reality
22
chemotaxis, opsonization and some other mechanisms of certain immune cells occurs
based on some chemical signals or sensing from the cells immediately. However, in this
model it happens only after pattern-recognition and signature matching which costs some
time.
23
CHAPTER II
REVIEW OF THE LITERATURE
Complement system is a complex system consisting of several different serum proteins
that interact with one another in three distinct enzymatic activation cascades [18].
Probably because of its complexity, there is no significant attempt made towards
simulating or computer modeling of the complement system. Some thought and planning
involving complement formation has been put by some researchers at the Whitaker
Biomedical Engineering Institute at John Hopkins University School of medicine.
However, in spite of enormous complexity of the immune system several computational
studies have focused on presenting a global and necessarily simplified understanding of
the human immune system and accompanying simulations.
The nature of the immune system and its behavior towards neutralizing the entry of a
foreign substance into human body is very complex. The defense attack mechanism by
the immune system involves approximately 1012 cells [27]. Researchers, in an effort to fit
detailed experimental findings into a comprehensive model of the immune system,
computer models and simulations have adopted different approaches. Three main
approaches involve using ordinary differential equations (ODE) to model various
phenomena that take place in the immune system [15], using qualitative, i.e., non-
numeric, information for modeling [16] and using distributed computation with
24
cellular automata [17]. ODE has been traditionally used to model complex systems such
as the immune system in mammals where a large number of players of various kinds
respond in different ways to the presence of various kinds of stimulants or chemicals.
One of the most fundamental papers in this area is by Perelson and Weishbuch (1997) in
which the authors use physical concepts and differential-equations based mathematical
methods for modeling a variety of immunological problems. For example, they present
models for clonal selection and affinity maturation, network models for antibody and Bcell interactions, and autoimmune diseases. Differential equations have been used in
many other efforts such as for modeling virus-neutralizing immunoglobulin response
[23], dynamics of co-infection of Mycobacterium tuberculosis and HIV-1 [24], the
dynamics of Plasmodium falciparum blood-stage infection [25], change in CD4
lymphocyte counts in patients before and after administration of HIV protease inhibitor
indianvir [26], and the differentiation of B lymphocytes under control of antigen [27], etc.
Researchers have enumerated problems with pure ODE approaches [27, 32]. The ODE
approach assumes large populations of essentially identical entities, which is not the case
with biological cells as each cell has a unique life history that defines its interaction with
the environment. This approach gives only average behavior of the system and it is
difficult to model non-linear behavior.
Cellular automata [10, 17, 11, 13] are discrete dynamical systems whose behavior is
completely specified in terms of a local relation. They have been widely studied as
examples of complex dynamical systems [14, 12], originally as examples of
25
components in a self-reproducing machine [34, 14] and then within the area of artificial
life. In a cellular automata model, some of the rules being followed include a discrete
lattice or grid representing space, time advances in discrete time steps, each cell in the
grid holding possible data which evolves according to the same deterministic rules and
the rules for the evolution of a cell depend only on a local neighborhood of cells around
it. Thus, the system's laws are local and uniform. In other words, cellular automata are
dynamical systems where state, space and time are discrete. Cellular automata are often
described as counterpart to ordinary or partial differential equations that are able to
describe continuous dynamical systems. Thus, in cellular automata models a complex
system which is described by not using complex equations, but by simulating this system
by interaction of cells following simple rules of interaction. In other words, the behavior
of a complex system emerges from simple interactions of simple individuals. Cellular
automata have been extensively used in artificial life-based programming where one
attempts to imitate life to achieve computer-programming objectives. The benefits of
cellular automata have made it attractive for many kinds of simulation. There have been
many attempts to simulate aspects of the immune system using cellular automata [35,
36]. Wiemar has presented a model, which simulates enzymatic reaction networks. In his
approach, he uses each lattice site as a container for one enzyme molecule, but multiple
metabolite molecules. Bezzi has discussed a variety of models for evolution of the
immune system using cellular automata. He introduces a model in order to study an
evolving set of individuals and the effects of co-evolution. In particular, he discusses
simulations of humoral and cellular immune responses using cellular automata.
26
CHAPTER III
SIMISYS OVERVIEW
Introduction to SIMISYS 0.3
The details of overview of SIMISYS 0.3 have been taken from the journal of
Bioinformatics and Computational Biology [22] which is in process for publication.
SIMISYS 0.3 is a software system that is able to model and simulate the basic behavior
of the human immune system. This simulation of immune system has two main
integrated modules, simulating the innate immune system and the adaptive immune
system. The primary components of the simulation are entities, which are the human
cells and bacterial cells. The grid structure is defined as a 3 dimensional array. Every
entity is placed within one grid cell or a grid place. Each grid place can contain
information about the current conditions in that cell. Every entity uses a grid pointer
(gPtr)
to point to a grid place. The grid uses a backend (bePtr) pointer to point to the cell
or entity that is in it currently.
Software Architecture
The interaction between the immune cells and bacterial cells has been modeled using
cellular automata. SIMISYS 0.3 is a software system with many interacting components.
Figure 2 provides an overview of the software components that constitute SIMISYS.
There are three main components:
27
1. The Modeler
2. The Matrix
3. The Visualization Engine
Figure 2 - Software Architecture Diagram of SIMISYS
The Main Driver program brings up a Graphical User Interface (GUI) through which the
user inputs parameters to model the bacterial cells and the immune cells. Figure 3 is a
snapshot of the screen to enter the parameters for Bacteria entity. The user can vary the
parameters of all the objects such as their initial count, lifespan, maximum count, etc. All
these factors have an effect on the functioning of these cells. The user can also provide
data to set up the size of the grid and study its impact on the immune response through
the graphical user interface.
Once the parameters have been specified, control of the system passes to the Modeler
when the user hits the create button. The Modeler then reads the values entered by the
user and starts the simulator. The simulator creates the Matrix, all the immune cells,
28
bacteria, blood vessels, lymph vessels and controls all the interactions among them.
Figure 3 - GUI to set the parameters for Bacteria
The Matrix models the physical space that the cells occupy. It represents the tissue and
the lymph node. It consists of a 3 dimensional grid of cells, where the simulator places
the objects, i.e., all human and bacterial cells. Each entity occupies one cell. The matrix
also has the ability to hold chemicals and diffuse them. In SIMISYS version 0.3, there are
two physical spaces being modeled in the Matrix, a generic tissue space and a generic
lymph node.
29
The visualization engine is responsible for display of the model and its simulation. The
data reader reads the information from the matrix and provides the information to be
displayed to the display engine. The display engine exchanges this information with the
graphics interface built using SDL 1.2 [37], and presents a view of the tissue, lymph or
other matrices depending on interest of the user. Either the tissue or the lymph node can
be displayed at a time. A toggle key “T” on the keyboard has been provided for the user
to make a choice. A separate panel for the display of the statistical results of the system
has also been provided.
Software details
The SIMISYS Immune System simulation is implemented in C and C++. It has a
multithreaded architecture based on pthreads [6]. The graphics are displayed using SDL
version 1.2 [37], a graphics library.
The Modeler Entities
The participants are modeled using the class structure given in Figure 4. Each entity is
created as a C++ class in the simulation.
Class BasicCell
Class BasicCell is at the top level of the hierarchy tree as all the cells inherit
characteristics of in this class. Common methods like setType(), setStatus(), setAge(),
setGridWrapper()
and setLifeSpan() are inherited by the sub classes.
30
Figure 4 - Class hierarchy of SIMISYS 0.3
Class ImmuneCell
This class at the second level of hierarchy is the parent class of all the immune cells in the
simulation. The methods defined in this class are inherited by all the ImmuneCell sub
classes. The main methods of interest are hasBumped(), SelfNonself() and die(). All the
immune cells call the method hasBumped() when they move to another grid position.
This method allows the ImmuneCell object to find out whether they have encountered
another human cell or not. To achieve this, the selfNonself() method is called to check
whether it is foreign. If the membrane of a cell has “MHC” then the cell is considered as
Self,
if not it is Nonself. The method die() is called when a cell attains its lifespan. This
class inherits from class BasicCell.
Class Bacteria
31
In SIMISYS version 0.3 handles a simple and a single type of bacteria. The class
Bacteria
exhibits the behavior of bacteria. Once inside the body, it starts reproducing and
moves through the tissue. It carries its 4 bit signature expressed as its epitope with it,
which allows T cells with complimentary signature only to be activated. This further
activates specific B cells and ultimately, antibodies specific to this strain of bacteria are
produced.
Class Macrophage
The class Macrophage models macrophages as phagocytes that are prevalent in the tissue
at the beginning of the simulation. A fixed number of these move around at random in the
tissue and exhibit their typical garbage collecting behavior by eating any dead or
foreign entity. A Macrophage object moving around in the tissue checks if it has found
an entity in its vicinity by the method hasBumped(). It further checks the entity to be a
foreign by calling the method selfNonself() of its super class ImmuneCell. On an
encounter with a foreign entity, it uses the eat() method to destroy this entity and become
an Antigen Presenting Cell (APC). Finally, the method move() lets these objects move
around in the grid.
Class Neutrophil
The cells have been implemented as a very simple class whereby they ooze out of the
blood vessel on sensing the concentration of the IL1 secreted by activated macrophages.
This means that the software simulates a scenario where the neutrophils are not called
unless the battle is really intense and unless the macrophages alone are not able to
32
destroy all the bacteria. Unless there is an infection of some kind, neutrophils are not
activated. They have been implemented as immune fighters with a very low life span but
which arrive in large quantity. The attempt is to destroy the bacteria through these innate
fighters.
The general methods of the BasicCell class have been inherited by the Neutrophil class
whereby they set their age, their type and their status when they are created. They
increment their age by one unit by setAge() in each simulation cycle, check the type of
the cell into which they have bumped by the selfNonself() method. The method kill()
is used to destroy the Bacteria object encountered. The method by die() sets the
status of the Neutrophil object to DEAD.
Class THelper
The helper T cells are the first cells on the scene to assist the macrophage. The helper T
cells are responsible for activating the B cells after they themselves get activated on
bumping into an APC. The complement() method finds the complement string of the
signature of the antigen and string matching features have been used to activate THelper
objects. If a right match of the epitope of Bacteria which is a 4 bit string of binary
numbers and the signature of the THelper object is found on the APC membrane, then the
THelper
object gets activated. This object now carries the signature of the processed
antigen from the membrane of the APC. This signature is needed to set the prime flag of
a BCell object which produces antibodies specific for an antigen. THelper entity needs
additional cytokine signal, IL1 released by activated macrophages to get activated after
interacting into an APC. Once activated, THelper cells follow the flow of body fluids and
travel to the nearest lymph vessel. Only those THelper objects with their cognate
33
antigen peptide are activated by the APCs. This feature has been implemented by
allocating a unique 4-bit binary string signature to every THelper object that is created
and stored as T cell receptor tcr.
Class Bcell
BCell
objects are created and released into the grid through the BloodVessel object. The
process of binding to specific parts of the antigen presented by the APCs is simulated in
the readBact() method. Only those BCell objects that find the complement of their
receptor bcr match with the signature of the Bacteria membrane are activated. This is
implemented in the code by setting the active flag to be true. When an activated BCell
finds an activated THelper, the readTcell() is called to compare its bcr with the respective
tcr.
If a match occurs the BCell object gets primed and its prime flag is set to true. The
primed BCell objects travel to the lymph node where they perform the clonal selection.
Only those BCell entities that are primed and active perform clonal selection by executing
the method reproduce(). These two requirements are essential for the proliferation and
cloning of the B cells since in the human immune system each B cell can produce only
one kind of antibody. Once the primed BCell object knows the signature of the Bacteria,
the activated THelper provides it the required growth factor IL2 enabling the primed and
activated BCell entity to proliferate to form a clone of B cells, all with the same bcr. The
method reproduce() creates a new object of type PLASMA_B or MEMORY_B with the
same bcr. Very few are created to be memory B cells, to fight against the invasion by the
same bacteria at any later stage in the life cycle of the host and others take the function
34
of plasma B cells. The PLASMA_B cell entities produce antibodies.
Classes LymphVessel, LymphNode and BloodVessel
Instances of LymphVessel and BloodVessel objects are created in main.cpp with some
rows, columns and depth. There are two active BloodVessel instances in the grid through
which immune cells enter the grid after they sense chemicals around them by the
inspectForChemicals().
This method checks for the concentration of the chemicals INF
and IFNy within its vicinity and on detecting their presence allows the entry of instances
of classes Neutrophil, NaturalKiller and THelper in the simulation. The change of
location from tissue to lymph node or vice versa is achieved by changing the
GridWrapper
pointer to the world to which the entity is being translocated. There is a
single instance of LymphVessel looking for activated and or primed BCell object and
activated TCell object to be translocated to the lymph node. The lymphnode object is
created with its own Grid and GridWrapper.
The Matrix
The Matrix represents the physical space simulated. It is implemented using the Grid and
Gridwrapper
classes. The implementation of cellular automata approach to computation
and simulation requires that a physical space composed of physical cells is present. The
Grid
implements the physical cells. Inside each physical cell in the grid, one biological
cell and one or more identified molecules can be placed.
Class Grid
35
The basis of the simulation rests with the Grid structure. The Grid is composed of an
array defined as a three dimensional rectangle making up the world for the simulation.
Each grid cell or position can contain a pointer to an entity and also store information
about the current conditions in that cell. In SIMISYS version 0.3, a grid with 100 grid
rows, 100 grid columns and a depth of 20 has been created. This allows simulating (100 *
100 * 20 = 200,000) cells. This is a small number compared to the many billions of
players in the immune system, but this is still a very high number for computer
simulation. This forms the main section of the tissue where all the immune cells move
around and interact with each other. Each grid cell maintains a concentration list that
holds all the chemicals being loaded to it. Each grid cell maintains the concentration of
each type of chemical in it. Six chemicals, which are active in stimulating the cells and
maintaining the concentration gradient, required for the movement of the cells are loaded
and maintained. These are:
1. LPS (Lipopolysaccharide)
2. IFN (Interferon)
3. IL-1 (Interlukin-1)
4. IL-2 (Interlukin-2)
5. TNF (Tumor Necrosis Factor)
6. IFNy (Interferon-gamma)
Three BloodVessel instances and one LymphVessel instance are situated in the same grid
as the tissue. The lymphnode instance enclosing a smaller grid area has a size of
30 * 30 * 20 or 18,000 physical cells created under the ln GridWrapper.
36
Every entity uses the idea of a grid and back end pointer as shown in Figure 5. A grid
pointer is used in each entity to point to the grid position that it is situated in. Using the
grid pointer, a cell can check its neighboring grid positions for other entities, or inquire
about the chemicals, and antibodies present within its own position. The back end pointer
(bePtr), present in each grid cell points to the cell that is in it currently.
3D GRID
Entity
Grid Pointer
Grid Pointer1
Back end
Pointer
Figure 5 - Grid structure SIMISYS 0.3
Some of the methods of this class include isOccupied() which lets an entity to know
whether any of the immediate 26 neighboring positions is occupied or not. The methods
setOccupied()
updates the status of each of the grid cell as it is occupied or vacated. The
method loadChem() allows for the loading of a specific concentration of a chemical and
the method getConcentration() allows the access to the concentration of an already
loaded chemical onto a grid cell. These two methods control the dynamics of the
37
whole simulation.
Class GridWrapper
The class GridWrapper, as the name suggests, encapsulates a three dimensional rectangle
of grid cells. It allows containing information about a grid along with the memory
allocated to it. The GridWrapper class is essential in cases where more than one grid area
or world is to be simulated. Each entity structure contains a pointer to a GridWrapper
class through it and can access the appropriate data in the world to which it belongs.
Hence each entity knows about the world that it belongs to, i.e., either to the tissue or the
lymph node.
The Visualization Engine
The visualization aspect of SIMISYS has been developed as a tightly integrated
visualization engine that can be adapted to handle introduction of entities in future
releases. A graphing package has been included in the software that can be used to
decipher the results of the simulation. The engine is based on the use of SDL library [37]
that is an open source package suitable for direct screen manipulation. The advantages of
using the SDL package are the ability to display an image on the screen at a specified
location. The engine operates as described below.
 The images to be used for each type of entity are specified. The engine
ignores display of any entity that has not been specified.
 The engine then formats the image loaded for transparent background color
38
and performs scaling of each of the entities loaded to have a series of
increasingly larger images.
 Based on the user's keyboard entries, the engine decides the area of the
simulation to be displayed. Six possible directions, two on each of the three
dimensional axis have been implemented. This allows the user to zoom in and
zoom out of the screen.

For each of the entities recognized in the grid, the engine computes the
distance of the entity from the front of the screen. Based on this distance, the
image is displayed on screen such that a smaller image is displayed for an
entity farther than an entity closer to the user. This gives the impression of a
three dimensional engine, without the computational expense.
39
CHAPTER 1V
SIMISYS 0.4
Implementation Overview
The software modeling of the complement system has been performed by modifying and
enhancing SIMISYS 0.3. The new version, SIMISYS 0.4 has many more new classes
added providing additional functionality. The proteins and glycoproteins, which
constitute the complement system, are mainly synthesized by the liver. Hence a class
liver has been created. The focus of the simulation is on the liver object, which has been
created with its own Grid area and GridWrapper classes. It has a pointer from the
BloodVessel
object. The BloodVessel object sets the location of the liver object and the
tissue Grid area through pointers as shown in Figure 6.
Input.xml
Liver
Tissue
Blood
Vessel
Complement
{C1, C2, C3,...}
Figure 6 - Liver design and its role
The other significant player of this new version of SIMISYS 0.4 is class complement
system.
40
Instances of class complementsystem, which are created by the liver object,
are placed at different positions randomly in the tissue Grid area. It has a grid pointer to
know in which grid cell it is situated and the grid cell has a cs pointer to the
complementsystem
instance present in it as shown in Figure 8.
Figure 7 – SIMISYS 0.4 Class hierarchy
Some new entities have been introduced to enforce the required functionality. These
include the KupfferCell, Erythrocyte, Mastcell, EpithelialCell. All of these entities are
created using BasicCell as their super class except for KupfferCell which has been created
as a type of Macrophage. The hierarchy of the classes is as shown in Figure 7.
Each entity and its methods have been discussed in detail in the following chapters. This
version of SIMISYS still maintains the cellular automata approach of one grid cell can
hold one biological cell and one or more identified molecules [22]. Even though the
complementsystem object
has a grid pointer to the grid and a cs pointer from the grid,
41
the setOccupied() method has not been applied to it. This enables a biological cell or an
entity and a complementsystem object to occupy a single grid cell at any given time.
This explains the logic used by the complementsystem object to inspect its own grid
Grid Pointer2
Complement
System
Grid Pointer1
CS Pointer
Grid Pointer1
Entity
Back end
Pointer
Figure 8 - SIMISYS 0.4 Grid Design
position apart from inspecting its immediate surrounding grid positions while looking for
an entity.
42
CHAPTER V
LIVER
Introduction
The liver is the largest glandular organ of the body. Blood is carried to the liver via two
large vessels called the hepatic artery and the portal vein. The hepatic artery carries
oxygen-rich blood from the aorta, a major vessel in the heart. The portal vein supplies
blood and also carries oxygen, which collects nutrients from the intestine to be processed
by the liver. Liver tissue is composed of thousands of lobules, and each lobule is made
up of hepatic cells, the basic metabolic cells of the liver. The liver is like a chemical
factory, which performs many different kinds of chemical reactions at any given
moment. The major site of synthesis of complement proteins is the liver [1].
Class Liver
This class is responsible for creation of complementsystem instances and placing them
under the GridWrapper representing tissue. A single instance of class liver is created in
main.cpp
with a specific number of rows, columns and depth. The liver object created
has its own Grid pointed by liver GridWrapper. It has a pointer from the middle middle
BloodVessel
instance.
43
Methodology
void loadConfigurationFile(string xmlfile)
This member method generates a tree representation of input.xml and stores it in
memory for random access. input.xml has the configuration of different types of
complement system components to be created along with the count of each such
component. Both are of type integer. For instance, in Figure 9 a sample of input.xml is
shown. This is a simple XML file with the configuration for four types of complement
system
components and their respective counts being specified. The XML file is being
passed as a string. This method ensures that the XML file gets loaded to enable its
parsing.
<complement_configuration>
<count>4</count>
<complement>
<type>21</type>
<count>500</count>
</complement>
<complement>
<type>22</type>
<count>1000</count>
</complement>
<complement>
<type>23</type>
<count>2000</count>
</complement>
<complement>
<type>24</type>
<count>1000</count>
</complement>
</complement_configuration>
Figure 9 - File input.xml
Class ComponentData() is a nested class of the liver object. C++ allows the use of
pointers that point to pointers, which in turn, point to data. dataList which is an instance
of the ComponentData object, is created as a pointer to a pointer. This instance points
44
to the list of complement system data. A DOM (Document Object Model) interface is
used to parse the XML file, since a SAX (Serial Access) interface forces one to access
XML documents sequentially.
iks_Load
is the function used to parse the XML document
into a tree. Some of the basic access functions used to parse this tree using the DOM
parser are
iks_find_cdata,
iks_next,
iks_name,
iks_type,
iks_type.
After the tree
representation of the configuration file has been created, each node in the tree holds a
type of complement system component and its count.
void createComplement(GridWrapper *tgw)
This function gets the count from each dataList node and sums it up. This is the total
number of complement system components to be generated. Then it populates the range
in which a particular component has to be generated by calculating the percentage of that
component. The range is specified between lowerRange and upperRange attributes for
each type of component. Then a random number between 0 and 99 is generated. While
the count of a node is greater than 0, based on the random number the particular node
whose lowerRange is less than or equal to the random number and upperRange is greater
than the random number is selected. A random grid position representing tissue is picked
and if cs pointer of that position is a NULL pointer, then the method
placeComplement(int,
complementsystem
dataList.
int,
int,
GridWrapper
*tgw,
int
Type)
of
class
is called. Its type is set by passing the type of the selected node of
This process is carried out till the count of each node is equal to zero. This
method is called in main.cpp by the liver object, and the address of the GridWrapper
representing tissue is passed as a parameter. All the types of complementsystem
instances before cleaving are created and placed at the beginning of the simulation and
45
their status set to INACTIVE.
void placeErythro(BasicCell *bc)
This method is responsible for the placing of erythrocyte objects having their status set
to CARRIER found in the BloodVessel region to the liver Grid area. A random position in
the liver Grid area is picked and if it is not occupied, the erythrocyte object is
translocated. If the Grid place is occupied, then the process is tried again repeatedly until
the erythrocyte object finds a grid place in the liver Grid area.
46
CHAPTER VI
COMPLEMENT SYSTEM
Pathways of activation
The complement system consists of about 30 proteins which are present in blood in an
inactive form. This is a highly sophisticated host defense system designed to destroy
pathogens. Once the complement system is activated, a chain of reactions involving
proteolysis and arrangement occurs, resulting in destruction of the membranes of
pathogens leading to the death of the pathogen cells. The cascade up to the formation of
the C3 convertatse leading to the cleavage of the third complement component C3,
which plays a central role in the complement system, is called the activation pathway.
Figure 10 demonstrates the different pathways of activation and the common lytic
pathway. Different components of complement system are activated through different
pathways. The pathways are described in detail [1].
Classical pathway
Typically to activate the classical complement pathway, antibodies of type IgG or IgM
is made in response to an antigen. The Fab portion of IgG (2 molecules) or IgM (1
molecule) reacts with epitopes of that antigen. A complement component called C1q
first binds to the Fc portion of antigen-bound IgG or IgM after which C1r and C1s get
47
Figure 10 - Components involved in different pathways
activated and attach to form C1, the first complement macromolecular complex of the
pathway. The activated C1s now cleaves and activates C4, releasing C4a and C4b. C4b
binds to the surface of the bacterium and then binds C2. The activated C1s cleaves C2
into C2a and C2b forming C4b2a, the C3 convertase. Now the classical complement
pathway is activated. C3 convertase can now cleave hundreds of molecules of C3 into
C3a the anaphylatoxin and C3b the opsonin. Some molecules of C3b bind to C4b2a, the
C3 convertase, to form C4b2a3b, a C5 convertase that cleaves C5 into C5a and C5b.
Some C3b act as opsonins, which make the bacteria more susceptible to the action of
phagocytes [18, 19, 1].
Lectin Pathway
48
The lectin pathway is antibody-independent and is mediated by mannan-binding lectin
also known as mannan-binding protein or MBP. MBP is a glycoprotein that binds to the
mannose groups on a pathogen cell wall. The MBP is equivalent to C1q in the classical
pathway. Activation of the lectin pathway begins when MBP binds to repeating mannose
residues on a pathogen cell wall. Two MBP associated serine proteases, MASP1
(mannan-binding lectin serine protease 1) and MASP2 equivalent to C1r and C1s
respectively of the classical pathway now bind to the MBP. This forms an enzyme similar
to C1 of the classical pathway that is able to cleave C4 and C2 to form C4b2a, the C3
convertase, capable of enzymatically splitting hundreds of molecules of C3 into C3a and
C3b. C4b2a3b, the C5 convertase is a critical enzyme in the common lytic pathway. In
this pathway C4 activation is achieved without any antibody [18, 19, 1].
Alternative Pathway
The alternative pathway is mediated by C3b, which is produced either from the classical
or lectin pathways or from hydrolysis of C3. Serum protein C3 is unstable and is subject
to slow spontaneous hydrolysis to yield C3a and C3b.
There are many initiators of the alternative pathway and one of them is the
Lipopolysaccharide from gram negative bacteria [2]. Activation of the alternative
pathway begins when C3b binds to the pathogen cell wall or other surface components of
the pathogen. Alternative pathway protein Factor B then combines with the pathogen
cell-bound C3b to form C3bB. Factor D then splits the bound factor B into Bb and Ba,
forming C3bBb. The C3bBb complex is not very stable by itself and falls apart in a few
seconds. A serum protein called Properdin or Factor P, binds to C3bBb to form
49
C3bBbP and stabilizes this complex so that it lasts for several minutes. C3bBb possesses
C3 convertase activity. The alternative pathway is now activated bypassing the activation
and cleaving of C4 and C2. Some of the C3b subsequently binds to some of the C3bBb to
form C3bBb3b, a C5 convertase, capable of splitting molecules of C5 into C5a and C5b.
The C5 convertase is a critical enzyme in the common lytic pathway.
In the classical pathway, C3 is rapidly cleaved to C3a and C3b by the enzymic activity of
the C3 convertase. In the alternative pathway, serum C3 which contains an unstable
thioester bond is subject to slow spontaneous hydrolysis to yield C3a and C3b. The C3b
component can bind to foreign surface antigens such as those on bacterial cells of viral
particles or even to the host's own cells. The membranes of most mammalian cells have
high levels of sialic acid, which contributes to the rapid inactivation of bound C3b
molecules on host cells; consequently this binding rarely leads to further reactions on the
host cell membrane. Because many foreign antigenic surfaces (e.g., bacterial cell walls,
yeast cell walls, and certain viral envelopes) have only low levels of sialic acid, C3b
bound to these surfaces remains active for a longer time [1].
The lytic pathway is the terminal pathway and is common to all the pathways. It is named
so because this process causes the lysis of the target cells. It involves complement
components C5b, C6, C7, C8 and C9. The C5 convertase from one of the three pathways
cleaves C5 into C5a the anaphylatoxin and C5b. C5b binds to the surface of the target
cell and subsequently binds C6, C7 to yield a hydrophobic C5b67 complex, which
attaches quickly to the plasma membrane. Subsequently C8 binds to this complex and the
C5b678 complex creates a small pore. Finally, a number of monomers of C9 also bind to
form C5b6789n, the Membrane Attack Complex (MAC). The completed MAC is a
50
large cylindrical pore on the cell membrane, which disrupts the ion and osmotic balance
across the membrane, killing the pathogen cell. C5b67 can bind indiscriminately to any
cell membrane leading to cell lysis. Such an indiscriminate damage to by-standing cells is
prevented by Protein S, which binds to C5b67 complex and blocks its indiscriminate
binding to cells other than the primary target [18, 19, 1].
Complement system design and flow
input.xml
Liver
loadConfigurationfile(input.xml)
Generate Complement Components
Liver
Choose random grid
positions representing tissue
complementsystem
instance present?
NO
placeComplement()
Contd on
next page
YES
51
1
complementsystem
inspectForEntity()
1
1
NO
NO
Bacteria with
hasLPS found ?
Bacteria with
hasMannoseGroups
= true found ?
YES
Antibody_Coated
NO
1
Bacteria found ?
YES
complementsystem
with type set to MBP
complementsystem
with type set to C3b
YES
gets activated
gets activated
complementsystem
with type set to C1
gets activated
Lectin Pathway
processes are carried out
Classical Pathway
processes are carried out
Altenative Pathway
processes are carried out
NO
NO
MAC_FORMED =true ?
YES
Bacteria
status = DEAD
Figure 11 - Complement system design and flow
NO
Class complementsystem
52
The complementsystem instances after being created and placed by the liver object at
random grid positions, keeps inspecting for entity. If an entity of type Bacteria is found,
based on its status whether antibody_coated or hasMannoseGroups is set to true or if
Bacteria membrane
has LPS (Lipopolysaccharide), the corresponding pathway namely
classical, lectin or alternative and the corresponding initial component namely C1 or MBP
or C3b gets activated by setting its respective status to ACTIVE. The complementsystem
object then appends a string representing the name of current type of component to the
cellMembrane attribute of the Bacteria object, which is also a string. This is to indicate
the presence of the particular complementsystem object and thus aiding in the activation
of the next type of complementsystem object in cascade. Then it frees itself from the
Grid
by making the corresponding cs pointer from the grid cell NULL and its grid pointer
equal to the grid pointer of the Bacteria object. Now the complementsystem object
references the Grid through the Bacteria object, so that wherever the Bacteria object
moves, the complementsystem object moves along with it. In all the cases, only if the
MAC_FORMED
Bacteria
flag of the complementsystem object is set to true, then the status of
object is set to DEAD. Figure 11 illustrates the logic used by the complement
system components for their activation, the pathway activated and for the destruction of
bacteria cells.
Methodology
53
The following methods are declared as private methods:
void setName(string Name)
This method sets the name of a particular complementsystem instance to a string
representing that type. This kind of naming is used so that string operations can be
performed easily. For complementsystem instance of type MBP its name is set to “MBP”.
string getName()
Returns the name of the complementsystem object as a string.
string cleaveA(string s)
Appends string "a" to the end of the string s being passed and returns the string. For
instance cleaveA(“C2”) returns “C2a”.
string cleaveB(string s1)
Appends string "b" to the end of the string s1 being passed and returns the string.
This functionality is useful by complementsystem instances to get a new string
derivative to represent the name or label of the bigger product of cleaving. For example,
if C3 is being cleaved by calling the method cleave(), it sets the name of the new object
as “C3b”.
void recalculateDirection()
Changes the direction of movement of the complementsystem object.
54
char *binaryString(int value)
This method returns a pointer to a character array containing the string value of an integer
in binary. For coating of immune complex surfaces by C3b, the author has used integer 3,
which, represents the signature of complementsystem object of type C3b.
In this
software model, all the operations performed on the cellMembrane attribute of entities
have been done using string operations. Hence this method is called to convert the integer
representation to string representation. This method considers the internal representation
of integer 3, which is in binary represented by 0011. It converts it into a string “0011”
and returns a pointer to the character array as shown in Figure 12.
0
0
1
1
\
Figure 12 - Character array representing signature of C3b
The following member methods are declared with public access:
void setType(int type)
Sets the type of complementsystem object as an integer equal to the parameter 'type'
being passed. From Figure 9, for complementsystem object of type C1 this method sets
its type to 21.
int getType()
This method returns the type of complementsystem object as an integer.
void setLifeSpan(float lifespan)
This member method sets the lifespan of the complementsystem object as a float data
type variable.
float getLifeSpan()
55
This method returns the lifespan of the object. If age is equal to or greater than the
lifespan,
then the die() method of that complementsystem instance is called.
void setAge(float a)
In the beginning of the simulation this method is executed to set the respective ages of all
complementsystem
objects to be 0.0. After each cycle, age gets incremented by one unit.
float getAge()
Method returns the age of a particular complementsystem object as a float.
void setStatus(int stat)
This command sets the status of the complementsystem object. At the beginning of the
simulation or right after being cleaved, the status of the objects is set to INACTIVE. Later
when the complementsystem object finds an entity with the required stimulus, it gets
activated by calling this method and setting its status to ACTIVE.
int getStatus(void)
This query returns the current status of the complementsystem object.
static void placeComplement(int x, int y, int z, GridWrapper *tgw, int Type)
This method creates the complementsystem objects as a doubly linked list of objects. It
is made static so that the liver object, which calls this method, does not have access to
any other member of the complementsystem object, thus maintaining data
56
encapsulation.
void move()
This method is called by the complementsystem object to move when its status is
INACTIVE.
The object looks for any vacant Grid position among the surrounding 26
positions which is not pointing to any other complementsystem object. If found then the
complementsystem
object moves to the first such available Grid position. If the object is
on the periphery, i.e., the searching of position goes beyond the Grid locations then, the
direction of the search is changed by calling the recalculateDirection() method.
void live()
This is a void method, which checks whether the age of the complementsystem object
has exceeded its lifespan. If it has exceeded, then the member method die() is called if
not, then inspectForEntity() method is called. If no entity of particular interest is found,
then the object moves by calling the move() method. The live() method is called in
main.cpp
under the method simulating the life cycle for all the complementsystem
instances.
BasicCell *findEntity()
The complementsystem objects keep circulating using the move() method inspecting for
an entity with the required attribute. In this method, the complementsystem object
surveys all the immediate surrounding twenty six grid positions and also its own grid
position. If a BasicCell object is found, a pointer to the first one found is returned.
void inspectForEntity()
57
If the findEntity() method does not return a NULL pointer and if the BasicCell object
being returned is of type BACTERIA and its status is not equal to DEAD then, based on the
type of the complementsystem object the Bacteria object is handled. Since in standard
C/C++
all strings are treated as pointers, to switch on type of the complementsystem
object an enum [3] type is defined with the type value same as the value of
complementsystem
object in globals.h.
If the returned BasicCell object is of type BACTERIA and its status is not equal to DEAD
then based on the enumerator type, the switch statement changes its type as follows:
case mbp:
Calls the method setName(string name) and sets its name to “MBP”. MBP is the initial
component of the lectin pathway. Hence this object inspects for entity whose
hasMannoseGroups
flag is set to true as shown in Table 1. Once found, it sets its status
to ACTIVE and appends a string "MBP" representing its name, to the cellMembrane string
attribute of the Bacteria object. This is to indicate its presence on the Bacteria object so
that the next component in cascade namely MASP12 will be able to find the Bacteria
object while inspecting for an entity with “MBP” on its cellMembrane and get activated.
Then it sets the cs pointer of its grid position to NULL and sets its grid pointer equal to the
grid pointer of the Bacteria object. It sets the status of the Bacteria object to
MBP_Activated.
The setting of status of Bacteria object is for the purpose of displaying
different images on the screen. Now this complementsystem object moves along with
the Bacteria object in the Grid representing tissue. Figure 13 shows the
complementsystem
object referencing the Grid through the entity.
58
3D Tissue Grid
Complement
System
Grid Pointer2
Grid Pointer1
Entity
Grid
Pointer1
Back end
Pointer
Figure 13 - complementsystem object referencing Grid through an entity
case masp12:
Two MBP associated serine proteases, MASP1 and MASP2 now bind to the MBP. This
forms an enzyme that is able to cleave C4 and C2 to form C4b2a, the C3 convertase.
Since the two proteases bind to the same MBP together, the author has used a single
component by setting its name to “MASP12”. These form the second and third
components in the lectin pathway. This component keeps inspecting for entity whose
cellMembrane
contains the string "MBP". Once found, it sets its status to ACTIVE and
appends a string "MASP12" representing its name, to the cellMembrane of the Bacteria
object. Then it sets the cs pointer of its grid position to NULL and sets its grid pointer
equal to the grid pointer of the Bacteria object. It sets the status of the Bacteria object to
MASP_Activated.
object.
Now this complementsystem object moves along with the Bacteria
59
case c1:
Sets its name to “C1qC1rC1s” which is the initial component of the classical pathway.
Keep inspecting for entity whose status is set to Antibody_Coated, i.e. it keeps inspecting
for an immune complex entity. Once found, it sets its status to ACTIVE and appends a
string representing its name, to the cellMembrane of the Bacteria object. Then it sets the
cs
pointer of its grid position to NULL and sets its grid pointer equal to the grid pointer of
the Bacteria object. Then it sets the status of the Bacteria object to C1_Activated. This
complementsystem
object moves along with the Bacteria object.
case c4:
Sets its name to “C4” representing the second component in the classical pathway or the
third element in the lectin pathway. This object keeps inspecting for entity whose
cellMembrane
has "C1qC1rC1s" or "MASP". Once found, it calls the method cleave()
which creates and places object of the type C4b at its position. Only the bigger product of
cleaving or splitting is placed in the grid, the smaller component is loaded as a chemical
to the grid at the same position as the bigger component is placed. Before calling the
withdraw()
method, this object calls the method cleaveB(string Name) and sets the name
of the new object as “C4b”. The complementsystem object of type C4b is placed at the
same position and releaseAnaphylatoxin(C4a_Concentration) method is called from the
cleave()
method. Since the anaphylatoxins C4a, C3a and C5a have different levels of
inducing chemotaxis, the concentration of the loading of anaphylatoxin varies for each
type of anaphylatoxin.
60
case c4b:
After being created and placed, sets its status to ACTIVE and appends a string "C4b"
representing its name, to the cellMembrane string attribute of the Bacteria object. Then it
sets the cs pointer of its grid position to NULL and sets its grid pointer equal to the grid
pointer of the Bacteria object. It sets the status of the Bacteria object to C4_Activated.
This complementsystem object moves along with the Bacteria object.
case c2:
C2 is the third component in the classical pathway and the fourth component in the lectin
pathway. This component name is set to “C2”. It keeps inspecting for entity whose
cellMembrane
has "C4b". Once found, it calls the method cleave() which creates and
places complementsystem object of type C2a at its position and then it calls the method
cleaveA(string Name)
and passes a substring of its name at position 1 to it to obtain the
return string as “2a” which it sets as the name of the new object, before calling the
method withdraw(). Now the complementsystem object of type C2a is placed at the
same position.
case c2a:
After being created and placed, sets its status to ACTIVE and appends a substring "2a"
representing its name, to the cellMembrane of the Bacteria object. Then it sets the cs
pointer of its grid position to NULL and sets its grid pointer equal to the grid pointer of the
Bacteria
object. It sets the status of the Bacteria object to C2_Activated. This
complementsystem object moves along with the Bacteria object. By now the C3
convertase
is formed with the cellMembrane containing the string “C4b2a”.
61
case c3:
C3 is a key component in the complement system. This component calls the method
setName(string Name)
and sets its name as “C3”. Water is being added as a chemical to
the grid. If C3 finds the concentration of WATER chemical greater than the THRESHOLD
CONCENTRATION
"C3bBb",
at its grid position, or if it finds a Bacteria object with "C4b2a" or
which represents the C3 convertatses respectively from different pathways,
then it calls the cleave() method. It calls the cleaveB(string Name) method by passing
its name to the function and obtaining “C3b” as the return string. This it sets as the name
of the new object. The signature of this object is set to “0011” and is stored as a character
array. Finally it calls the method withdraw().
case c3b:
This is the initial component of the alternative pathway. Once cleaved and placed, this
object looks for entity with "C4b2a" or "C3bBb" or entity with hasLPS on its
cellMembrane.
Once found, it sets its status to ACTIVE and appends a string "C3b"
representing its name, to the cellMembrane string of the Bacteria object. Then it sets the
cs
pointer of the grid to NULL and sets its grid pointer equal to the grid pointer of the
Bacteria
object.
complementsystem
It sets the status of the Bacteria object to C3b_Activated. This
object moves along with the Bacteria object.
By now the C5
convertase is formed for the lectin pathway or the classical pathway.
C3 is the most abundant complement system component in the serum and C3b is the
major opsonin of the complement system. Many cells such as erythrocytes and
phagocytes such as macrophages express CR1 receptors, which bind to C3b [1]. The C3b
objects after being cleaved and placed coats the immune complex surfaces by appending
their signatures to the cellSurface string attribute of the entity. This is to enable
62
opsonization through the opsonize() method of Macrophage entity and clearance of
immune complexes by the clearImmuneComplex(BasicCell *bc) method of the
Erythrocyte
entity.
case factorB:
Factor B is the second component in the alternative pathway. Sets its name to “B” by
calling the appropriate method. Inspects for entity with "C3b" on its cellMembrane string
field. Once found, it sets its status to ACTIVE and appends a string "B" representing its
name, to the cellMembrane string of the Bacteria object. Then it sets the cs pointer of the
grid to NULL and sets its grid pointer equal to the grid pointer of the Bacteria object. It
also sets the status of the Bacteria object to FactorB_Activated. This object moves along
with the Bacteria object.
case factorD:
Factor D is the third component in the alternative pathway and splits C3b bound factor B,
releasing a small fragment Ba that diffuses away and generating C3bBb, which has C3
convertase activity [1]. Inspects for entity with "C3bB" on its cellMembrane. Once found,
it sets its status to ACTIVE and calls cleaveB(“B”). Then appends the resulting string "Bb"
to the cellMembrane of the Bacteria object thus imitating the cleaving activity. Then it
sets the cs pointer of the grid to NULL and sets its grid pointer equal to the grid pointer of
the Bacteria object. It sets the status of the Bacteria object to FactorD_Activated. Now
C3bBb
is formed, which has C3 convertase activity. This complementsystem object
moves along with the Bacteria object.
63
case factorP:
Inspects for entity with "C3bBb" on cellMembrane of Bacteria. Once found, it sets its
status to ACTIVE. It sets the isStabilized flag to true. Then it sets the cs pointer of the grid
to NULL and sets its grid pointer equal to the grid pointer of the Bacteria object. This
complementsystem
object moves along with the Bacteria object. By now the C5
convertase is formed for the alternative pathway.
case c5:
The first of the five late complement components. It sets its name to “C5”. Inspects for
entity whose cellMembrane has "C4b2aC3b" or "C3bBbC3b", which are the C5
convertases from different pathways, if found, then calls the cleave() method. This in
turn calls the releaseAnaphylatoxin(C5a_Concentration) method. Before calling the
withdraw()
“C5b”
method it calls the cleaveB(string Name) method and sets the returned string
as the name of the new object.
case c5b:
This is the initial component of the terminal lytic pathway. Irrespective of the pathway
activated, from this stage the components involved in all the pathways are the same. The
terminal sequence of complement activation involves components namely C5b, C6, C7,
C8 and C9, which interact sequentially to form a macromolecular structure called the
membrane attack complex. This complex forms a large pore across the membrane of the
target cell eventually leading to the destruction of the bacterial cell [1].
Component C5b after being created and placed, sets its status to ACTIVE and appends a
string "C5b" representing its name to the cellMembrane of the Bacteria object. Then it
sets the cs pointer of the grid to NULL and sets its grid pointer equal to the grid pointer
64
of the Bacteria object. It sets the status of the Bacteria object to C5b_Activated. Then
this object moves along with the Bacteria object. From C5b onwards, there is no cleaving
activity in the late components of the complement system.
case c6:
This component sets its name to "C6". It inspects for entity with "C5b" present on its
cellMembrane.
If found, sets its status to ACTIVE and appends a string "C6" representing
its name, to the cellMembrane of the Bacteria object. Then it sets the cs pointer of the
grid to NULL and sets its grid pointer equal to the grid pointer of the Bacteria object. It
sets the status of the Bacteria object to C6_Activated. This object moves along with the
Bacteria
object.
case c7:
Sets its name to "C7". Inspects for entity with "C6" present on its cellMembrane. If
found, sets its status to ACTIVE and appends a string "C7" representing its name to the
cellMembrane
of the Bacteria object. Then it sets the cs pointer of the grid to NULL and
sets its grid pointer equal to the grid pointer of the Bacteria object. Then it sets the status
of the Bacteria object to C7_Activated. This object moves along with the Bacteria object.
case c8:
Sets its name to "C8". Inspects for entity with "C7" present on its cellMembrane. If
found, sets its status to ACTIVE and appends a string "C8" representing its name to the
cellMembrane
of the Bacteria object. Then it sets the cs pointer of the grid to NULL and
sets its grid pointer equal to the grid pointer of the Bacteria object. Then it sets the
65
status of the Bacteria object to C8_Activated. This object moves along with the Bacteria
object.
case c9:
Sets its name to "C9". Inspects for entity with "C8" present on its cellMembrane. If
found, sets its status to ACTIVE and appends a string "C9" representing its name, to the
cellMembrane
of the Bacteria object. Then it sets the cs pointer of the grid to NULL and
sets its grid pointer equal to the grid pointer of the Bacteria object. It sets the status of the
Bacteria
object to C9_Activated. It takes at least two objects of C9 to act upon the same
Bacteria
object and set the MAC_FORMED flag to true. Once MAC_FORMED is set to true,
the status of Bacteria object is set to DEAD.
In all the above cases, after setting the cs pointer to be NULL and the grid pointer to be
equal to the grid pointer of the Bacteria object, the complementsystem object references
the Grid through the Bacteria object and moves along with it before calling the method
withdraw(),
which sets its status to DISSOLVE, so that it is removed from the doubly
linked list of complementsystem objects. This is to make sure that the same object will
not participate in inspection of entity anymore.
Or else in disease scenario (systemic lupus erythematosus), if the returned BasicCell
66
object is of type EPITHELIAL and irrespective of its status whether DEAD or ALIVE,
based
on the enumerator type, the switch statement changes its type as follows:
case c1:
Sets its name to “C1qC1rC1s”. Keep inspecting for entity whose status is set to
Antibody_Coated.
Once found, it sets its status to ACTIVE and appends a string
representing its name, to the cellMembrane of the entity. Then it sets the cs pointer of its
Grid
position to NULL and sets its grid pointer equal to the grid pointer of the entity.
There is no movement exhibited by the epithelialCell entity which line the tissue, hence
the complement system instances do not move with this entity, rather they remain
stationery once they encounter the epithelialCell entity through the classical pathway.
case c4:
Sets its name to “C4”. Keep inspecting for entity whose cellMembrane has "C1qC1rC1s".
Once found, it calls the method cleave() which creates and places object of the type C4b
at its position. Before calling the withdraw() method, this object calls the method
cleaveB(string
Name)
complementsystem
and sets the name of the new object as “C4b”. The
object of type C4b is placed at the same position and
releaseAnaphylatoxin(C4a_Concentration)
method is called.
case c4b:
After being created and placed, sets its status to ACTIVE and appends a string "C4b"
representing its name, to the cellMembrane of the entity. Then it sets the cs pointer of its
grid position to NULL and sets its grid pointer equal to the grid pointer of the entity.
67
case c2:
Keep inspecting for entity whose cellMembrane has "C4b". Once found, it calls the
method cleave() which creates and places complementsystem object of type C2a at its
position and then calls the method cleaveA(string Name) and passes a substring of its
name at position 1 to it to obtain the return string as “2a” which it sets as the name of the
new object, before calling the method withdraw(). The complementsystem object of
type C2a is placed at the same position.
case c2a:
After being created and placed, sets its status to ACTIVE and appends a substring "2a"
representing its name, to the cellMembrane of the entity. Then it sets the cs pointer of its
grid position to NULL and sets its grid pointer equal to the grid pointer of the entity
object. The C3 convertase is formed.
case c3:
Calls the method setName(string Name) and sets its name as “C3”. Water is being added
as a chemical to the grid. If C3 finds the concentration of WATER chemical greater than
the THRESHOLD CONCENTRATION, or if it finds an entity with "C4b2a" then the
cleave()
method is called. Then it calls releaseAnaphylatoxin(C3a_Concentration). It
calls the cleaveB(string Name) method by passing its name to the function and obtaining
“C3b”
as the return string. This it sets as the name of the new object. Finally it calls the
method withdraw().
case c3b:
68
Once cleaved and placed, this object looks for entity with "C4b2a". Once found, it sets its
status to ACTIVE and appends a string "C3b" representing its name, to the cellMembrane
of
the entity. Then it sets the cs pointer of the grid to NULL and sets its grid pointer equal
to the grid pointer of the entity. By now the C5 convertase is formed for the classical
pathway.
case c5:
Sets its name to “C5”. Inspects for entity whose cellMembrane has "C4b2aC3b", if found,
then calls the cleave() method. Then the releaseAnaphylatoxin(C5a_Concentration).
Before calling the withdraw() method it calls the cleaveB(string Name) method and sets
the returned string “C5b” as the name of the new object.
case c5b:
After being created and placed, sets its status to ACTIVE and appends a string "C5b"
representing its name to the cellMembrane of the entity. Then it sets the cs pointer of the
grid to NULL and sets its grid pointer equal to the grid pointer of the entity.
case c6:
Sets its name to "C6". Inspects for entity with "C5b" present on cellMembrane. If found,
sets its status to ACTIVE and appends a string "C6" to the cellMembrane of the entity.
Then it sets the cs pointer of the grid to NULL and sets its grid pointer equal to the grid
pointer of the entity.
69
case c7:
Sets its name to "C7". Inspects for entity with "C6" present on its cellMembrane. If
found, sets its status to ACTIVE and appends a string "C7" representing its name to the
cellMembrane
of the entity. Then it sets the cs pointer of the grid to NULL and sets its
grid pointer equal to the grid pointer of the entity.
case c8:
Sets its name to "C8". Inspects for entity with "C7" present on its cellMembrane. If
found, sets its status to ACTIVE and appends a string "C8" representing its name to the
cellMembrane
of the entity. Then it sets the cs pointer of the grid to NULL and sets its
grid pointer equal to the grid pointer of the entity.
case c9:
Sets its name to "C9". Inspects for entity with "C8" present on its cellMembrane. If
found, sets its status to ACTIVE and appends a string "C9" representing its name, to the
cellMembrane
of the entity. Then it sets the cs pointer of the grid to NULL and sets its
grid pointer equal to the grid pointer of the entity. It sets the status of the entity to
C9_Activated.
It takes atleast two instances of C9 to act upon the same entity and set the
MAC_FORMED
flag to true. Once MAC_FORMED is set to true, the status of entity is set to
LYSED.
void withdraw()
This method sets the status of the complementsystem object to DISSOLVE.
70
void cleave()
This method creates the bigger complementsystem object obtained by cleaving of the
calling object. It places the new object at the same position or in any of the positions
surrounding immediately surrounding the calling object. The smaller object is loaded as a
chemical at same grid position of the calling object by. For example if the
complementsystem object C3
calls this method then a new complementsystem object of
type C3b is created and placed. The releaseAnaphylatoxin(C3a_Concentration) is
executed.
void releaseAnaphylatoxin(int Concentration)
This method loads a specific concentration of anaphylatoxin at the particular grid position
of the object calling this function.
int placeCompSys (ccomplementsystem *b)
This method ensures that a valid position is available in the grid for the placing of the
bigger product of cleaving. This method returns an integer 1 if the object being cleaved
has already set its cs pointer to NULL so that the bigger component of its cleaving can be
placed at its position or else integer 0. In this method the status of the object is set to
INACTIVE
and the type is set. In the case of C3b, a 4-bit signature is assigned as a string
by calling binaryString(int bin). The signature used for the C3b object is “0011”
representing integer 3 as a string.
void die()
This method sets the status of the complementsystem object to DEAD.
71
CHAPTER VII
ERYTHROCYTES
Introduction
Commonly known as the red blood cells, the erythrocytes make up the largest number of
circulating blood cells, numbering from 4.5 million to 6 million per cubic millimeter of
blood [28]. Their main function is to transport oxygen and carbon dioxide between the
lungs and the body tissues. The worn out erythrocytes after circulating in the blood for a
few days are destroyed by the macrophages of the spleen [28]. Although white blood
cells or lymphocytes are the main players in an immune response, erythrocytes also play
a very important role. The coating of soluble immune complexes with C3b is thought to
facilitate their binding to CR1 receptors on erythrocytes [1].
Previous in vitro studies have shown that immune complexes (IC) that fix complement
can bind to the C3b receptors on primate erythrocytes These findings suggest that primate
erythrocytes intercept large complement-fixing IC in the circulation causing the IC to
adhere to the erythrocyte until the IC-bearing erythrocyte travels to liver where the IC is
deposited to be engulfed by the kupffer cells which are the macrophages of the liver, and
the erythrocyte is returned to the circulation. This primate erythrocyte-IC-clearing
mechanism may be important in the protection against diseases mediated by deposition of
circulating IC [5].
72
Class Erythrocyte
Initially a doubly linked list of erythrocyte objects equal to INIT_RBC is created. This is
done by the method createInitRBC() in main.cpp. The CR1 receptor is a 4-bit string
assigned to each erythrocyte object. It has a value of “1100” which is complement of the
C3b
receptor value. This CR1 receptor is represented using a character array as shown in
Figure 14.
1
1
0
0
\
Figure 14 - Character array holding CR1 receptor of Erythrocyte entity
Methodology
void live()
This method decides the final status of the erythrocyte entity at the end of each
simulation cycle. If an object’s age is greater or equal to its lifespan, then its status is set
to DEAD by calling the die() method. If not, then the erythrocyte object searches for an
immune complex, if found then the clearImmuneComplex(BasicCell *othr) is called and
this object’s status is set to CARRIER.
BloodVessel
Then the object starts moving towards the
object by calling the appropriate move() method. Or else if the object finds
a macrophage of type KUPFFER then, the KUPFFER cell eats the immune complex carried
by this erythrocyte object and the status of the erythrocyte is set to ALIVE. If none of the
above actions take place, then the erythrocyte object moves randomly.
73
void move()
If
the
status
of
the
erythrocyte
object
moveErythroRandom(cErythrocyte *erythro)
is
ALIVE
then
the
method
is executed else if the status is CARRIER
then moveErythro(cErythrocyte *erythro) is called.
void moveErythroRandom(cErythrocyte *erythro)
In this particular move method, the erythrocyte searches its immediate neighborhood
consisting of twenty six grid positions, if any of the grid positions is not occupied by any
other type of BasicCell object, then it moves to the first such available grid position. This
happens only when the status of the erythrocyte object is set to ALIVE.
void clearImmuneComplex(BasicCell *othr)
As the name implies, this method helps in clearing the immune complexes coated by C3b
from circulation. If the floating immune complexes are not cleared, they get deposited in
the tissue and cause excessive tissue damage. When an erythrocyte finds a BasicCell
object whose status is Antibody_Coated or DEAD or LYSED, it calls the complement()
method and tries to find the complement of its CR1 on the cellMembrane of the found
BasicCell
object. A complement of the bit string receptor or signature is found when the
0s of the source signature tallies with the 1s of the destination signature as shown in
Figure 15. If it finds the complement, the erythrocyte object sets BasicCell object’s status
to CLEARED, bePtr to NULL, grid pointer of the BasicCell to setOccupied(0) and lastly
the gPtr to NULL. This is to make sure the dead Bacteria object does not occupy any Grid
place of tissue. It then sets an IC pointer, which is a protected member, to this BasicCell
object, sets its status to CARRIER and calls the moveErythro(cErythrocyte *erythro)
74
method.
CR1
receptor
1
1
0
0
C3b
signature
0
0
1
1
Figure 15 – Complement of CR1 receptor matching with C3b signature
void moveErythro(cErythrocyte *erythro)
This method enables the erythrocyte entity carrying the immune complex to move
towards the middle blood vessel instance so that once in the vicinity of the BloodVessel
object the erythrocyte object gets translocated to the liver object grid area. This method
is called when the status of an erythrocyte object is set to CARRIER. The concentration
of the drift attribute at the current Grid position is obtained. Then the erythrocyte object
attempts to find an existing Grid position, which is not occupied by any other BasicCell
object and whose concentration of drift variable is greater than the current concentration.
If found one, the erythrocyte object moves to that Grid position, if not, then the
erythrocyte
erythrocyte
object moves randomly. Once the BloodVessel object locates the
objects
carrying
placeErythro(BasicCell *bc)
the
immune
complex,
then
it
calls
the
method of the liver object.
static void placeErythro(int, int, int, GridWrapper *tgw)
This method is called by BloodVessel object to create more instances of erythrocyte
entity. While inspecting for chemical if the BloodVessel object senses a specific
concentration of Histamine loaded by the MastCell object, the BloodVessel sets its
morePermeable
attribute to true and creates more erythrocytes in the tissue to depict
75
an inflammatory response. As a result erythrocyte objects get placed in the tissue grid
area using this method and in the next turn Neutrophil objects get placed. The
morePermeable
attribute is set to false in the beginning so that no cells come out from
the BloodVessel.
void die()
The status of the particular erythrocyte object is set to DEAD.
BasicCell *findKupffer()
When within the liver GridWrapper, if the erythrocyte object finds a macrophage
object of type KUPFFER, it returns a pointer, the bePtr of the KUPFFER object, if not it
returns NULL.
BasicCell *findImmuneComplex()
If the erythrocyte object finds a BasicCell object whose status is Antibody_Coated or
DEAD
or LYSED, then it returns the bePtr of that object else it returns NULL.
char *binaryString(int value)
This method returns a pointer to a character array containing the string value of an integer
in binary.
string complement(const char *epitope)
Returns the complement of a string by replacing 1’s by 0’s and 0’s by 1’s.
76
CHAPTER VIII
MAST CELLS
Introduction
Mast cells can be found in almost all kinds of tissues, including the skin, connective
tissues of various organs, and mucosal epithelial tissue of the respiratory, genitourinary,
and digestive tracts. These cells have a tendency to degranulate because of the presence
of large numbers of cytoplasmic granules that contain histamine. Mast cells are found
throughout connective tissue, particularly near blood and lymphatic vessels. Mast cells
are mainly responsible for release of histamine, which is a very good vasodilator, and one
of the principal inflammatory mediators. These cells are nonphagocytic [1, 2, 28].
Class MastCell
This class is created as a subclass of BasicCell class. Since mast cells settle in connective
tissues and usually do not circulate in the blood stream[28], they are created as an array
of fixed number of objects placed in the Grid area representing tissue. This class is
responsible for sensing the anaphylatoxin mainly and inducing degranulation thus
releasing Histamine. C5a is extremely potent at stimulating neutrophil chemotaxis [28].
77
Methodology
void live()
This is a void method, which checks whether the age of the MastCell object has exceeded
its lifespan, or not. If it has exceeded, then the member method die() is called. If not, the
getConcentration()
method is called to get the concentration of anaphylatoxin. If the
concentration is greater than the THRESHOLD_CONCENTRATION, then the MastCell
object calls induceDegranulation(), if not then the MastCell object moves.
void induceDegranulation()
This methods loads a specific amount of chemical Histamine at Grid position of the
MastCell
object.
void move()
This method inspects the surrounding twenty six grid positions. If any of the Grid
positions is not occupied, then the MastCell object moves to that place and occupies that
Grid
place. It does so by vacating the previously occupied position.
void moveMastCell(MastCell *mc)
This move method allows the MastCell object to move toward the greater concentration
of anaphylatoxin.
78
CHAPTER IX
KUPFFER CELLS
Introduction
Kupffer cells are macrophages found in the liver sinusoids. These cells have standard
macrophage specialization i.e., receptor mediated phagocytocis, lysosomal digestion.
They migrate to the liver and reside there during their life span. This type of macrophages
are especially significant, with responsibility not only for cleaning bacteria out of the
blood from the intestine, but also removing worn out erythrocytes and recycling
hemoglobin, a task shared with macrophages of spleen [38]. Kupffer cells are generally
considered fixed tissue macrophages of the liver. High-resolution in vivo video
microscopy shows that these cells have the ability to migrate along sinusoidal walls [5].
Class Macrophage
A doubly linked list of Macrophage objects is created in main.cpp and their type is set to
KUPFFER.
These are placed within the liver GridWrapper after creation. Since the
movement of kupffer cells is very slow and needs a high-resolution video, the move
method has not been implemented for this type of immune cell.
Methodology
79
void live()
This method checks whether the age of the Macrophage object of type KUPFFER has
exceeded its lifespan or not. If it has exceeded, then the member method die() is called.
void die()
Sets the status of the Macrophage object of KUPFFER type to DEAD.
80
CHAPTER X
COMPLEMENT DEFICIENCIES AND DISEASE SCENARIO SIMULATION
Introduction
Complement deficiencies can be categorized as genetic and secondary. Homozygous
genetic deficiencies lead to frequent infections like pneumonia and meningitis [1].
Secondary deficiencies can be caused by ailments such as serious burns which results in
huge amounts of protein loss, autoimmune diseases like systemic lupus erythematosus
(SLE) and liver diseases [30]. For the disease scenario simulation the author has chosen
to simulate two disease scenarios one with infections caused by neisseria meningitidis
which is characterized by late complement genetic deficiency and a second disease
scenario with SLE autoimmune disease which leads to a lack or deficiency of the early
complement components because of the human body’s excessive requirement of C3b the
opsonin in a fight against itself.
Systemic Lupus Erythematosus
Systemic Lupus Erythematosus (SLE) is a recurrent autoimmune disease in which the
immune system targets different organ tissues and healthy human cells. In some
individuals autoantibodies are produced against one's own tissue. The disease is called
systemic because of involvement of various organs like the skin, kidneys, joints, brain,
bone marrow, muscles and gastrointestinal tract. SLE is widespread in women of
81
childbearing age although it has been reported in people of other ages of life. The reason
that women of childbearing years account for 90% of cases may be due to the hormones
involved [28].
Theories explaining origins of autoimmunity
Several attempts have been made to explain the origins of autoimmunity which include
the following theories:
•
The sequestered antigen theory explains that during embryonic growth, some
tissues are immunologically privileged, i.e., they are secluded behind anatomical
barriers and cannot be scanned by the immune system. Examples of these
secluded sites are regions of the central nervous system, which are shielded by the
meninges and blood-brain barrier, the lens of the eye that is enclosed by a capsule
and antigens in the thyroid and testes which are isolated behind an epithelial
barrier. Eventually the antigen becomes exposed by means of infection, trauma, or
deterioration, and is perceived by the immune system as a foreign substance [28].
•
According to the clonal selection theory, the immune system of a fetus develops
tolerance by eradicating all self-reacting lymphocyte clones, called forbidden
clones, while retaining only those clones that react to foreign antigens. Some of
the forbidden clones may survive, and since they have not been subjected to this
tolerance process, they will attack tissues with self-antigens [28].
•
The theory of immune deficiency proposes that mutations in the receptor genes
82
of some lymphocytes make them self-reactive or that a general breakdown in the
normal T-suppressor function sets the scene for abnormal immune responses [28].
Autoimmunity and Complement deficiency
In certain individuals, the immune system malfunctions by losing its sense of self and
nonself which leads to the production of autoantibodies attacking the host. The link
between complement deficiency and lupus has been known for over two decades, still the
etiology of SLE is quite elusive[29]. Complete deficiency of one of the early components
C1, C4, or C2 of the classical pathway is one of the strongest genetic risk factors for
susceptibility to SLE that has been recognized [29] because of the body’s requirement for
excessive amount of complement components to fight against itself. Deficiencies in early
components namely C1, C2 and C4 each contribute to reduced level of C3b the opsonin.
This leads to inappropriate clearance of the immune complexes formed as they settle in
the basement membrane of the tissue leading to severe tissue damage.
Apoptosis
Apoptosis is the genetically programmed death of cells. It is the body’s way of
eliminating infectious and abnormal cells. During the process of apoptosis the cells
undergo many morphological changes but these take place very smoothly without the
release of intracellular contents into the extracellular environment. The apoptotic bodies
are quickly phagocytosed by the macrophages in normal situations [1].
Autoantibodies, autoantigens and apoptosis in SLE
83
In the majority of patients with SLE, antinuclear antibodies (ANA) are the specific
autoantibodies that attack the nucleus and DNA of the patient's healthy cells. About half
of SLE patients also have antiphospholipid antibodies. They attack phospholipids, fatty
compounds found in cell membranes throughout the body [1]. In recent studies it has
been demonstrated that there is a mounting body of evidence that apoptotic cells are the
source of autoantigens in lupus [7]. Antiphospholipids such as phosphatidylserine, which
are found in the inner layer of the cell membrane, are translocated to the outer layer as
part of the process of apoptosis. In lupus patients, the autoantibodies bind to
phosphatidylserine [7].
SLE disease scenario simulation
Epithelial cells which line the tissue has been created as a type of BasicCell class with a
4 bit string signature starting with ‘1’ representing the antiphospholipid in the inner layer
of the cellMembrane of normal epithelialcell entity as shown in Figure16. As the
simulation proceeds, some of the eithelialcell instances undergo apoptosis by setting their
status to DEAD and changing their inner layer 4 bit string signatures to 6 bit string
signatures starting with ‘0’ indicating translocation of the antiphospholipid to the outer
layer of the cellMembrane as shown in Figure 17. This triggers the Macrophage entity
to engulf the apoptotic epithelialcell objects portraying the nonSelf attribute and present
the antigenic four-bit signature to the Tcell and Bcell objects as shown by the highlighted
portion of Figure17.
84
1
0
1
0
Figure 16 - 4 bit string signature of normal EpithelialCell entity
0
1
0
1
0
0
\
Figure 17 – 6 bit string signature of apoptotic EpithelialCell entity
As a result autoantibodies are produced against healthy epithelialcell instances forming
immune complexes. Due to the formation of the immune complexes the complement
system gets activated through the classical pathway. Large number of immune complexes
are formed. To clear these immune complexes, complementsystem instances are utilized
at an increasing rate leading to a deficiency in the early components after sometime.
Complement system enhances the clearance of circulating immune complexes by binding
to complement receptors (CR1) on cells such as erythrocytes and macrophages [1]. When
complement, specifically C3b binds to CR1 on erythrocytes, the immune complex is
transported through the circulation to be presented to the macrophages in the liver [1].
In this scenario, because of the absence of early complement components later during the
course of the simulation, cleaving of C3b from C3 does not occur and hence the immune
complexes are deposited in the basement membrane of the tissue leading to its
damage [40]. The result of this scenario is shown in Figure 24.
Neisseria meningitidis
85
The bacterium Neisseria meningitides also known as the meningococcus, is a gramnegative diplococci and has a prominent antiphagocytic polysaccharide capsule, which is
an important virulence factor. The meningococcus usually resides in the human
nasopharynx without causing any serious disease in the early stages of infection prior to
invasion of the meninges. This carrier state may last for a few days to months and is
important because it not only provides a reservoir for meningococcal infection but also
simulates host immunity. Individuals, who are colonized, are carriers of the pathogen and
can transmit disease to non immune individuals [28]. The most important serogroups
associated with disease in humans are A, B, C, Y, and W135. Meningococcal meningitis
occur both sporadically (mainly groups B and C meningococci) and in epidemics (mainly
group A meningococci) [31].
Virulence Factors
Neisseria meningitidis is one of the main causes of meningitis. Infection is by aspiration
of infective particles or through close contact with secretion. After entry they attach to
epithelial cells of the nasopharynx, cross the mucos layer and enter the bloodstream
through the nearby blood vessels [28]. From the bloodstream how the meningococcus
enters the central nervous system is not known. A rash results from the release of
endotoxin from the bacteria leading to vascular necrosis, an inflammatory reaction, and
hemorrhage into the surrounding skin. The bacteria undergo rapid autolysis during
growth and releases their cell wall parts in a soluble form. Hence, the major toxin of
Neisseria meningitidis is its lipooligosaccharide (LOS), and its mechanism is endotoxic.
The other important virulence factor of Neisseria meningitidis is its antiphagocytic
86
polysaccharide capsule. Meningococcal LOS has been shown to suppress leukotriene B4
synthesis in human polymorphonuclear leukocytes. The loss of leukotriene B4 deprives
leukocytes of a strong chemokinetic and chemotactic factor [33].
Host defenses
Neisseria mengingitidis establishes systemic infections only in individuals who lack
serum bacterial antibodies directed against the capsular or noncapsular cell wall
antigens of the invading strain, or in patients deficient in the late complement
components. The integrity of the pharyngeal and respiratory epithelium appear to be
important in protection from invasive disease. The presence of serum bactericidal IgG
and IgM is probably the most important host factor in preventing invasive disease. These
antibodies are directed against both capsular and noncapsular surface antigens.
Individuals with complement deficiencies in C5, C6, C7, or C8 have high risk of
developing meningococcemia despite protective antibody. This emphasizes the
importance of the complement system in defense against meningococcal disease. The
frequency rate of meningococcal infection in patients with terminal complement
deficiency is as high as 66%. In addition to this high rate of first-time infection, the
frequency rate of recurrence with the same organism is also as high as 50% [33].
Late Complement components deficiencies disease scenario
Late complement components namely C5 to C9 are required for the lysis of Neisseria
meningitidis bacterial cells because of the presence of antiphagocytic polysaccharide
capsule. A case whereby reducing the concentration of any one of the late complement
87
components, has been studied. In spite of presence of phagocytic immune cells like
neutrophils and macrophages, the number of bacterial cells can be seen increasing on the
screen when the concentration of any one of the late complement components is reduced.
An image of genome Neisseria meningitidis serogroup A strain Z2491 [33] has been used
for the pictorial representation of the bacteria in the simulation. The results as seen on a
graph shown in Figure 25 are discussed later.
88
CHAPTER XI
EXTENSIONS TO OTHER CLASSES
Class Bacteria
The bit string signatures of the Bacteria object have been changed to 6 bit string
signatures from 4 bit signatures. All the signatures of Bacteria start with 0s. All the
human cells have signatures of 4 bits length, start with ‘1’. This makes immune cells
interpret self and nonself in a better way. For epitope matching, the intermediate four bits
of Bacteria are used for string comparison.
The first and the last bits are used to set
hasMannoseGroups
and hasLPS flags. If the first bit and the last bit are 0s, then the
hasMannoseGroups
flag of the Bacteria object is set. If the first bit is 0 and the last bit is
1 then the Bacteria object hasLPS flag is set, which activates the alternative pathway.
The signature patterns for Bacteria object has been demonstrated in Table 1.
Bacteria signature
Flag set
Activated pathway
0xxxx0
HasMannoseGroups =true
Lectin
0xxxx1
HasLPS = true
Alternative
Table 1 – Bacteria signature generation
89
Class Macrophage
The method hasBumped2() has been modified and it overrides the method
hasBumped2()
of its super class ImmuneCell. The new hasBumped2() returns a pointer
to any entity whose status is not DEAD or whose status is DEAD, if not it returns a NULL
pointer. If hasBumped2() returns a pointer to an entity whose status is not DEAD, then
findOpsonin(BasicCell *othr)
is called and if the Macrophage object finds the signature
of opsonin C3b on the cellSurface of the entity, then opsonize(BasicCell *bc) is called. If
hasBumped2()
returns a pointer to an entity whose status is DEAD, then
eat(BasicCell *bc)
is called.
Methodology of class Macrophage
void findOpsonin(BasicCell *bc)
C3b is the major opsonin of the complement system. Phagocytic cells like macrophages
express CR1 receptors that bind C3b. This enables better binding by phagocytes and
hence enhances phagocytosis [1, 28]. This method tries to find the complement of the
CR1
receptor on the cellSurface of the entity. If a match occurs then it calls
opsonize(BasicCell * bc).
void opsonize(BasicCell *bc)
Opsonization promotes phagocytosis of particulate antigens coated by C3b. This method
is the similar to eat(BasicCell *b) method, but acts only on entities whose status is not
DEAD
and which are coated by C3b the opsonin on their cellSurface attributes with the
signature “0011”.
Class Neutrophil
90
The Neutrophil object will destroy any Bacteria object whose status is not DEAD by
calling the kill() method. Previously the same operation was carried out on Bacteria
objects whose status was set to ALIVE. Neutrophil moves towards higher concentration of
anaphylatoxin
in order to reach the infection area.
Class BloodVessel
A new flag isPermeable has been introduced which is set to true if a specific
concentration of Histamine is found by the BloodVessel object while inspecting for
chemical. If this flag is set, then instances of erythrocyte and Neutrophil will be created
after sensing anaphylatoxin as a chemical. If the flag is not set, then new cells won’t
extravasate from the BloodVessel object.
Methodology of class BloodVessel
void circulatingICRemoval()
This method has been introduced in order for the erythrocyte objects to carry the
immune complexes to the liver object. This method is called by the BloodVessel instance
situated in the middle of the Grid area, which acts as a carrier of immune complexes to
the liver object. This BloodVessel instance sets up a drifting movement towards itself by
setting a high value of drift variable in its vicinity. This creates a suction like effect
towards this BloodVessel intance so that erythrocyte entities whose status is set to
CARRIER,
carrying immune complexes will move towards this central BloodVessel
instance which enables the BloodVessel instance to call inspectForErythro() method.
void inspectForErythro()
91
This method inspects for erythrocyte entity whose status is set to CARRIER in its vicinity.
If found, then the placeErythro(BasicCell *bc) by the liver object having a pointer from
the BloodVessel object is called. This translocates the erythrocyte entity whose status is
set to CARRIER, from the tissue Grid area to the liver Grid area.
92
CHAPTER XII
RESULTS ANALYSIS
The following notations have been used to label the linear graphs representing different
objects:
BA: Bacteria
CS: Complement System
TH: Helper T cells
BC: B cells
RBC: Erythrocytes
AB: Antibodies
NEU: Neutrophils
IC: Immune Complexes
Graph_1: Classical, Lectin and Alternative pathways
93
Figure 18 - Classical, Lectin and Alternative pathways
Figure 18 illustrates the behavior of the complement system against a bacterial attack
through all the pathways. Water is a constituent of the grid. Because of hydrolysis of C3,
it is cleaved to C3b. Some Bacteria objects with hasMannoseGroups flag set to true and
many with hasLPS flag set to true are created randomly. As a result both lectin and
alternative pathways get activated immediately without any antibodies required. The first
reaction to bacterial invasion, in any injury, is a general inflammatory reaction. This can
be seen by the number of erythrocyte and Neutrophil objects shooting up to indicate
more blood and hence more immune cells around the infected area. This happens after
MastCell
objects sense a particular concentration of anaphylatoxin and degranulate to
produce Histamine which makes the BloodVessel object morePermeable to allow more
erythrocyte
and neutrophil objects.
Blood vessels in the area of the infection widen to increase the supply of white blood
cells that fight infection. The linear graph depicting THelper objects concentration can be
seen rising. The THelper objects get activated and stimulate the BCell objects to
94
produce antibodies. Antibody production and hence the antibody coating of the Bacteria
objects activates the classical pathway. All the three pathways are activated. The
complementsystem
objects lyses the Bacteria cells directly or chemotactically attract
phagocytes which destroys the bacteria cells by opsonization. Due to the combined
defense mechanism of the immune system and the complement system the Bacteria
entity in this situation is more susceptible and hence its graph starts declining as their
number drop.
Graph_2: Classical, Lectin and Alternative pathways
Figure 19 - Classical, Lectin and Alternative pathways
Figure 19 depicts the behavior of complement system using all of its pathways against a
bacterial attack. The same concentrations of entities are used and the results indicate that
the software model is quite consistent.
95
Graph_3: Lectin pathway
Figure 20 - Lectin Pathway
Lectins are proteins that recognize and bind to specific carbohydrate targets. The lectin
pathway is activated by binding of mannose binding protein to mannose residues on the
surface of microorganisms [1]. The results in Figure 20 demonstrate a situation where
only the lectin pathway components namely MBP, MASP1, MASP2, C4, C2, C3, C5, C6,
C7, C8
and C9 are present. Since all the bacterial cells do not display mannose residues
on their surface, some Bacteria objects are created with hasMannoseGroups flag set to
true. As a result the lectin pathway is not so effective in eliminating the Bacteria but the
number of Bacteria objects is kept under control by not letting them to multiply rapidly.
Graph_4: Classical pathway
96
Figure 21 - Classical pathway
Classical pathway is activated by antibody-antigen complexes. Figure 21 depicts the
results of only classical pathway being activated. This scenario is created with classical
pathway components being loaded into the grid and creating maximum number of Bcell
and THelper objects specified. The antibodies are loaded into the grid as well and
directed against the bacterial cells. This suggests that the probability of all the Bacteria
objects in the simulation getting coated with antibody is more. Hence the result is good as
there is a huge drop in the number of Bacteria instances shown in the Figure 21.
Graph_5: Alternative pathway
97
Figure 22 - Alternative pathway
Alternative pathway components are the created in the simulation without creating any
other component. Figure 22 illustrates the alternative pathway result by C3b being loaded
assuming that C3 has been cleaved because of hydrolysis. The result it good as the
alternative pathway gets activated through the initial component C3b. The hasLPS flag of
the Bacteria entity triggers this activation. Even though there is a slight increase in the
Bacteria
entity concentration initially, later the concentration reduces drastically thus
establishing the effective mechanism of the alternative pathway in the lysing of bacterial
cells.
98
Graph_6: C3 deficiency
Figure 23 - C3 deficiency
C3 is a key component in the complement system which generates C3b. It is an abundant
serum protein. C3b enhances phagocytosis and enables immune complex clearance. The
result in Figure 23 shows a situation where C3 is not created in the simulation. The
increase in the count of Bacteria objects is obvious and can be seen in the graph. Patients
with C3 deficiency have the most severe clinical manifestations, reflecting the central
role of C3 in activation of C5 and formation of the MAC. The majority of patients with
C3 deficiency has recurrent bacterial infections and may have immune complex diseases
[1, 2, 28].
Graph_7: SLE scenario simulation
99
Figure 24 - SLE scenario
The graph shown in Figure 24 depicts the secondary complement deficiency in systemic
lupus erythematosus disease scenario. The autoantigens from apoptotic epithelialcell
objects drive the Macrophage objects to engulf them and present this autoantigenic
signature to the Tcell and Bcell objects, which get activated, and start proliferating. Hence
autoantibodies are produced. This can be seen by the linear graph of antibodies going up
even without the involvement of Bacteria objects. As a result of production of
autoantibodies immune complexes are formed with healthy and apoptic epithelialcell
objects. Immediately after the immune complexes are formed, the complement system
get activated through the classical pathway. Because of excessive consumption of
complementsystem
objects the linear graph representing complementsystem goes on
declining, leading to an impaired clearance of immune complexes. This increase in the
concentration of immune complexes can be depicted from the graph.
Graph_8: C5 deficiency
100
Figure 25 - Late complement deficiency
Late complement system components namely C5, C6, C7, C8 and C9 are required for the
formation of membrane attack complex and hence the lysis of target cells. Deficiencies of
late complement components [36, 37] that constitute the membrane attack complex result
in a significant increase in susceptibility to neisserial infections. The graph in Figure 25
shows an enormous increase in the number of Bacteria objects when concentration of C5
component is reduced to 0. The count of the Bacteria entity reaches its maximum of 400
within no time because of no lysing activity by the complementsystem objects.
101
CHAPTER XIII
INFERENCES AND CONCLUSION
A basic software model simulating the complement system pathways and other
functionality has been implemented using C++ object oriented language. The software
model implemented is modular in its design and construction and hence very flexible.
Due to the nature of object oriented programming (OOP), the software model exhibits
good inheritance and polymorphism. The use of XML to configure complement system
components provides with a very simple and flexible text format.
In this model new types of bacteria were introduced by suitably modifying their behavior
and attributes. Signatures of bacteria objects representing nonself start with 0 and
signatures of human cell objects start with 1. This has enabled the immune cell objects to
get a better distinction between self and nonself. This software model can handle bacteria
objects created with different signatures, at the same time through different pathways.
Previously in SIMISYS version 0.3 only one type of bacteria with a specific signature
was being handled at a time. Apart from lysing the target cell, another important
functionality of clearing of immune complexes by erythrocytes has been implemented. If
the immune complexes are not removed from circulation, they deposit in the basement
membrane of the tissue causing severe tissue damage and may lead to many kinds of auto
immune diseases. Based on the results obtained, the complement system along with the
immune system players has proved to be very effective in keeping the bacteria entity very
much under control hence establishing an active and important role of complement
102
system in an immune response. In this simulation many important physiological activities
of immune response like causing inflammation, chemotaxis and enhancing of
opsonization have been implemented. The highlight of this software model is its ability to
display that the complement system works very fast. The implementation of SLE disease
scenario proves one more characteristic of the complement system, that if a cell surface is
not protected it will be attacked by the complement system [1].
Using this software model, all the three different pathways can be simulated together and
as well as separately to study the behavior of each pathway by making the required
changes to the parameters. This software model developed should be able to serve as a
good model to study many more different kinds of bacteria especially gram positive
bacteria which are resistant to complement attack. In the future, viruses can be introduced
into to this system. Apart from the effective role played by cell mediated immunity in
host defense against viral infections, antibody and complement do play a significant role
in host defense against viruses and are often crucial in containing viral spread during
acute infection and in protecting against reinfection. Most of the enveloped viruses are
susceptible to complement mediated lysis. The viral envelope is largely derived from the
plasma membrane of infected host cells and is therefore susceptible to pore formation by
the membrane attack complex. The complement system is generally quite effective in
lysing gram-negative bacteria. The role of complement in defense against viral infection
is sufficiently important that pathogenic viruses have had to develop strategies to evade
complement activation [1].
GLOSSARY
Anaphylatoxin
103
The complement split products C3a and C5a, which are
responsible for the release of mediators that induce contraction of
smooth muscle and increased vascular permeability.
Antibody
Antigen-binding protein present on B-cell membrane and secreted by
plasma cells.
Antigen
Any substance (usually foreign) that binds specifically to an antibody or a
T-cell receptor.
Chemotaxis In the first step of phagocytosis, macrophages are attracted by and move
toward a variety of substances (chemicals) generated in an immune
response; this process is called chemotaxis.
Coccus
A bacterium of round, spherical or ovoid form.
Diplococci
Spherical or oval-shaped bacteria, typically found in pairs.
Endotoxin
A bacterial intracellular toxin that is not ordinarily released as is exotoxin.
Endotoxin is composed of a phospholipids-polysaccharide complex that is
an integral part of gram negative bacterial cell walls. Endotoxins can cause
severe shock and fever.
Epitope
The portion of an antigen that is recognized and bound by an antibody.
Fab
Antigen-binding fragment. The actual portions of an antibody molecule that have
shapes corresponding to that of epitopes of an antigen.
Fc
Constant fragment. The portion of an antibody molecule that carries out the
biological activities of that class of antibody. Biological activity includes binding
to receptors on phagocytes and activating the classical complement pathway.
Histamine The most profuse and the fastest acting of the cytokines which relaxes
vascular smooth muscle and dilates arterioles and venules.
Immune Complex
LPS
Multimolecular antibody antigen complexes that may be soluble
or insoluble depending upon their size and whether or not
complement is present.
An oligomer of lipid and carbohydrate that constitutes the endotoxin of gram
negative bacteria.
Meninges
They are any of the three membranes that envelope the brain and spinal
cord.
104
Meningitis The term meningitis refers to pathology in the meninges of the brain
or spinal cord.
Opsonin
A substance e.g., an antibody or C3b that promotes the phagocytosis of
antigens by binding to them.
Opsonization The promotion of phagocytosis of antigens by macrophages and
neutrophils.
Pathogen:
A disease causing microorganism.
Phagocyte
Cell with the capacity to internalize and degrade microbes or particulate
antigens.
Protease
An enzyme which breakdown proteins.
Reticuloendothelial system the fine meshwork of phagocytic cells supported on
connective tissue that extends throughout the spleen and
lymph nodes and also in other organs such as liver and
kidneys and which is involved in the uptake and clearance
of foreign particulate matter from the blood. Foreign
antigens taken up by cells of the reticulendothelial system
in lymphoid organs encounter the T cells and B cells of the
immune system, which then mount a specific immune
response.
Sinusoid Minute endothelium-lined space or passage for blood in the tissues of an organ
as the liver.
Strain
A set of descendants cloned from a common ancestor that retain the original
characteristics. Any deviation from the original is a different strain.
BIBLIOGRAPHY
105
[1] Richard A. Goldsby, Thomas J. Kindt, Barbara A. Osborne, Janis Chubby,
Immunology, Fifth Edition by W H Freeman & Company, January 2003.
[2] Lauren Sompayrac, How the Immune System Works, Blackwell Publishers, February
2003;
[3] Al Kelley, Ira Pohl, A Book on C, fourth edition by Addison Wesley Longman Inc,
1998.
[4] Cornacoff JB, Hebert LA, Smead WL, VanAman ME, Birmingham DJ, Waxman FJ.
J Clin Invest, Primate erythrocyte-immune complex-clearing mechanism, 1983 Feb;
71(2):236-47
[5] MacPhee PJ, Schmidt EE, Groom AC. Am J Physiol, Evidence for Kupffer cell
migration along liver sinusoids, from high-resolution in vivo microscopy, 1992 Jul:263(1
Pt 1):G17-23
[6] Nichols, Bradford, Dick Buttlar, and Jacqueline Proulx Farrell, Pthreads
Programming: A POSIX Standard for Better Multiprocessing, O'Reilly, Sebastopol,
California, 1996.
[7] Marina Botto, Links between complement deficiency and apoptosis, Bio Med 2001;
3(4): 207-210.
[8] Bhakdi S., Hugo F., Tranum-Jensen J., Functions and relevance of the terminal
complement sequence, Blut.1990; 60:309-318
[9] Sanal O, Loos M, Ersoy F, et al, Complement component deficiencies and infection:
C5, C8 and C3 deficiencies in three families, Eur J Pediatr. 1992; 151:676-679
[10] Dewdney A.K, A Cellular Universe of Debris, Droplets, Defects and Demons,
Scientific American, Volume 261, Number 2, August 1989, pages 102-105.
[11] Neumann von, John, Theory of Self-Reproducing Automata, University of Illinois
Press, Champain, Illinois 1966.
[12] Wolfram, S., Universality and Complexity in Cellular Automata, Physica 10D,
North-Holland, 1984, pages 1-35.
[13] Wolfram, S., Theory and Applications of Cellular Automata, World Scientific Press,
Singapore 1986.
[14] Gardner, M., Mathematical Games––The Fantastic Combination of John Conway’s
New Solitaire Game “Life”, Scientific American, Volume 224, Number 2, 1971, pages
120-123.
[15] Perelson, Alan S. and Gerald Weisbuch, Immunology for physicists, Reviews of
Modern Physcis, Volume 69, Number 4, October 1997, pages 1219-1267.
106
[16] Trelease, R.B. and Park, J., Qualitative process modeling of cell-cell-pathogen
interactions in the immune system, Computer Methods and Programs in Biomedicine,
Volume 51, pages 171-181, 1996.
[17] Toffoli T., Cellular Automata as an Alternative to (Rather than an Approximation
of) Differential Equations in Modeling Physics, Physica 10D, 1984, pages 117-127.
[18] Walport, M. J., Complement – First of two parts, 2001, N. Engl. J. Med. 344, 10581066.
[19] Walport, M. J., Complement- Second of two parts, 2001, N. Engl. J. Med. 344, 11401144.
[20] Kiran Adimulam, Modeling and Simulating the Adaptive Immune System, MS
Project Report, Department of Computer Science, University of Colorado at Colorado
Springs, May 2003.
[21] Anil Krishnansari, Modeling and Simulating the Innate Immune System, MS Project
Report, Department of Computer Science, University of Colorado at Colorado Springs,
May 2003.
[22] Jugal Kalita, Karen Newell, Rick Meadows, Kaushal Chandrashekhar, Reena Hans,
Priyadarshini Selvam, Cellular-Automata Based Computational Modeling and Simulation
of the Immune System with Modeling and Simulation of Bacillus anthrax, Journal of
Bioinformatics and Computational Biology – under progress, 2004.
[23] Funk G.A., A.D. Barbour, H. Hengartner and U. Kailinke, Mathematical Model of a
virus-neutralizing immunoglobulin response, Journal of Theoretical Biology, Volume
195, Number 1, 1998, pages 41-52.
[24] Kirschner D., Dynamics of co-infection with M. tuberculosis and HIV-1, Theoretical
Population Biology, Volume 55, Number 1, February 1999, pages 94-109.
[25] McKenzie, FE and Bossert, WH., The Dynamics of Plasmodium falciparum bloodstage infection, Journal of Theoretical Biology, 188(1) pages 127-140, Sep 7, 1997.
[26] Stein, DS and Drusano, GL, Modeling of the change in CD4 lymphocyte counts in
patients before and after administration of the human immunodeficiency virus protease
inhibitor indinavir, Antimicrobial Agents Chemother, Volume 41(2): 449-53, Feb 1997.
[27] Klienstein, Steven H.., and Philip E. Seiden, Simulating the Immune System,
Computer Simulation, July-August 2000, pp. 69-77.
[28] Kathleen Park Talaro and Arthur Talaro, Foundations in Microbiology, third
edition, McGraw-Hill Company 1999.
107
[29] Sullivan KE, Complement deficiency and autoimmunity, Curr Opin Pediatr
1998 Dec; 10: 600-6.
[30] Geanine Barone, Complement deficiencies, Gale Encyclopedia of Medicine 2002.
[31] Leake, JAD. Perkins, BA, Meningococcal Disease: Challenges in Prevention and
Management Infections in Medicine, Vol 17 (5) 364-77.
[32] Schatten, Alexander. Cellular Automata, Digital Worlds, 1999 First Version,
http://www.ifs.tuwien.ac.at/~aschatt/info/ca/ca.html.
[33] Parkhill J, Achtman M, James KD, Bentley SD, Churcher C, Klee SR, Morelli G,
Basham D, Brown D, Chillingworth T, Davies RM, Davis P, Devlin K, Feltwell T,
Hamlin N, Holroyd S, Jagels K, Leather S, Moule S, Mungall K, Quail MA, Rajandream
MA, Rutherford KM, Simmonds M, Skelton J, Whitehead S, Spratt BG, Barrell BG,
Complete DNA sequence of a serogroup A strain of Neisseria meningitidis Z2491 Nature
2000 Mar 30; 404(6777):502-6
[34] Gardner, M. Mathematical Games–On Cellular Automata, Self-reproduction, the
Garden of Eden and the Game “Life”, Scientific American, Volume 223, Number 4,
1970, pages 112-117.
[35] Bezzi, M., F. Celada, S. Ruffo and P. E. Seiden, The Transition between Immune
and Disease States in a Cellular Automaton Model of Clonal Immune Response, Physica
A, 1997, pages 145-163.
[36] Celada, F. and P. E. Seiden, A computer model of cellular interactions in the immune
system, Immunology Today, 13, 1992, page 56.
[37] Simple DirectMedia Library – SDL 1.2 http://www.libsdl.org.
[38] Specialized Cells of the GI System, Southern Illinois University School of Medicine
http://www.siumed.edu/~dking2/erg/gicells.htm#kupffer
[39] Garred P, Mollnes TE, Thorsteinsson L, Erlendsson K, Steinsson K, Increased
amounts of C4-containing immune complexes and inefficient activation of C3 and the
terminal complement pathway in a patient with homozygous C2 deficiency and systemic
lupus erythematosus, Scand J Immunol. 1990 Jan; 31(1):59-64.
[40]
Navratil JS, Korb LC, Ahearn JM, Systemic lupus erythematosus and complement
deficiency: clues to a novel role for the classical complement pathway in the maintenance
of immune tolerance, Immunopharmacology. 1999 May; 42(1-3): 47-52.