Alzheimers_Buildup
No preview image
Model was written in NetLogo 6.0.3
•
Viewed 433 times
•
Downloaded 65 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
globals [CellState] ;; keep track of CellState Breed [NFT a-NFT ] NFT-own [energyNFT] ;; AB, NFT, and APOE2 are all breeds of turtle. Breed [ AB a-AB ] AB-own [energyAB] Breed [ APOE APOEsingle] APOE-own [energyAPOE birth] patches-own [countdown dead ] to setup clear-all ask patches [ set countdown DiseaseProgression ] ;; initialize CellState to set parameter set-default-shape NFT "circle" create-NFT NFT-buildup [ ;; create the NFT, then initialize their variables set color magenta set size 2.3 ;; NFT can be up to 441 amino acids long (Sontheimer, 2015), using the 352 isoform, 352/150 = 2.3 set label-color magenta - 2 set energyNFT 50 setxy random-xcor random-ycor ] set-default-shape AB "circle" create-AB AB-buildup [ ;; create the AB, then initialize their variables set color blue set size .5 ;; AB is up to 51 amino acids long (Olsson, 2014), 51/200 = .333, round up to .5 set label-color blue - 2 set energyAB 50 setxy random-xcor random-ycor ] set-default-shape APOE "square" create-APOE Inital-APOE [ ;; create the APOE, then initialize their variables set color red set size 2 ;; APOE is 299 amino acids long (Phillips, 2014), 299/150 = 2 set energyAPOE 100 setxy random-xcor random-ycor ] reset-ticks end to go if not any? APOE [ stop ] ;; Humans require APOE for survival if (((count patches with [pcolor = green]) * 100)/(count patches) < %LiveRequired? ) [ stop] ;; Humans require live cells ask NFT [ ;; NFT is intracellular, does not move, does not lose energy task-CellState transcribe-NFT ] ask AB [ move set energyAB energyAB - .25 ;; AB loses energy as it moves task-CellState transcribe-AB ] ask APOE [ move set energyAPOE energyAPOE - 1 ;; APOE requires more energy than AB to move, larger set birth 1 catch deathAPOE transcribe-APOE ] ask patches [ grow-CellState ] ;; run procedure to allow regrowth of Cell health tick end to move ;; turtle moving around procedure rt random 100 lt random 100 fd 1 end to task-CellState ;; task CellState ask NFT-here [ if pcolor = green [ set pcolor brown ;; turn the cell brown, indicating cell recovering from task performed set energyNFT energyNFT + 5 ;; NFT and AB gain energy by performing tasks on each cell if energyNFT < 0 and pcolor = brown [ die ] ] ] ;; if NFT or AB run out of energy on an already unhealthy cell, die ask AB-here [ if pcolor = green [ ;; same thing, for AB set pcolor brown set energyAB energyAB + 100 if energyAB < 0 and pcolor = brown [ die ] ] ] end to catch let preyAB one-of AB-here ;; AB procedure, grab a random AB if (preyAB != nobody) ;; did we get one? if so, [ if (APOE-Variant = "APOE2" ) and (random-float 50 < AB-Transcription-Level ) ;; APOE2 has better odds of binding than APOE3 or APOE4 [ ask preyAB [ die ] ;; kill it set energyAPOE energyAPOE + 50 ] ;; get energy from breaking down AB if (APOE-Variant = "APOE3" ) and (random-float 75 < AB-Transcription-Level ) [ ask preyAB [ die ] ;; APOE3 and APOE4 are progressively worse at binding AB, get less energy from it set energyAPOE energyAPOE + 35 ] if (APOE-Variant = "APOE4" ) and (random-float 100 < AB-Transcription-Level ) [ ask preyAB [ die ] ;; APOE3 and APOE4 are progressively worse at binding AB, get less energy from it set energyAPOE energyAPOE + 20 ] ] ;; APOE3 and APOE4 allow higher levels of waste accumulation if count AB > 1 ;; APOE only acts on NFT when AB is present (Farfel, 2016) [let preyNFT one-of NFT-here ;; same as above for NFT if (preyNFT != nobody) [ if (APOE-Variant = "APOE2" ) and (random-float 50 < NFT-Transcription-Level ) [ ask preyNFT [ die ] set energyAPOE energyAPOE + 50 ] if ( APOE-Variant = "APOE3" ) and (random-float 75 < NFT-Transcription-Level ) [ ask preyNFT [ die ] set energyAPOE energyAPOE + 35 ] if (APOE-Variant = "APOE4" ) and (random-float 100 < NFT-Transcription-Level ) [ ask preyNFT [ die ] set energyAPOE energyAPOE + 20 ] ] ] end to transcribe-NFT ;; NFT procedure if count AB > 1 [ ;; AB cascade hypothesis (Jack, 2011) if random-float 100 < ( NFT-Transcription-Level / 25 ) [ ;; throw "dice" to see if you will transcribe set energyNFT (energyNFT / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 3 ] ] ] ;; hatch an offspring and move it forward 5 steps end to transcribe-AB ;; AB procedure if random-float 50 < ( AB-Transcription-Level / 25 ) [ ;; throw "dice" to see if you will transcribe, odds are better to compensate for NFT being larger/more accessible to APOE set energyAB (energyAB / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1 ] ] ;; hatch an offspring and move it forward 1 step end to transcribe-APOE ;; APOE procedure ifelse ( count APOE < ( count NFT + count AB) ) [ ;; transcribe more APOE only if NFT and AB levels are too high if (random-float 100 < ( APOE-Transcription-Level / 25 )) ;; throw "dice" to see if you will transcribe [set energyAPOE (energyAPOE / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1] ;; hatch an offspring and move it forward 1 step if pcolor = green [set pcolor brown set energyAPOE energyAPOE + 5 ] ] ] ;; APOE gets energy from cell as it is transcribed, takes cell's health for itself [ die ] ;; if ( APOE > NFT + AB) too much APOE already, cells will degrade APOE not produce more end to deathAPOE ;; APOE procedure when energy dips, die if APOE-Variant = "APOE2" [ if energyAPOE < 0 [ die ] ] ;; APOE2 is the baseline if APOE-Variant = "APOE3" [ if energyAPOE < 5 [ die ] ] ;; APOE3 and APOE4 are worse adapted to survival, die faster if APOE-Variant = "APOE4" [ if energyAPOE < 10 [ die ] ] end to grow-CellState ;; countdown on brown patches: if reach 0, grow some CellState if pcolor = brown [ ifelse countdown <= 0 [ set pcolor green set countdown DiseaseProgression ] [ if APOE-Variant = "APOE2" [ set countdown countdown - 10 ] ;; APOE2 is the baseline, cell recover faster if APOE-Variant = "APOE3" [ set countdown countdown - 5 ] ;; APOE3 and APOE4 are harder on the cells, cells take longer to recover if APOE-Variant = "APOE4" [ set countdown countdown - 1 ] ] ] end to color-patches ;; sets the disease state - user inputs how 'healthy' the tissue begins let InitalLivePatches (100 - DiseaseProgression) let total InitalLivePatches + DiseaseProgression let p-green InitalLivePatches / total let p-brown DiseaseProgression / total ask patches [ let x random-float 1.0 if x <= p-green + p-brown [ set pcolor green] if x <= p-brown [ set pcolor brown] ] end
There are 9 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.