Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Monoclonal antibody wikipedia , lookup
Molecular mimicry wikipedia , lookup
Hygiene hypothesis 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
Psychoneuroimmunology wikipedia , lookup
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.