Hemoglobin Cooperativity

No preview image

1 collaborator

Default-person Anton Weisstein (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.1 • Viewed 273 times • Downloaded 34 times • Run 0 times
Download the 'Hemoglobin Cooperativity' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

breed [oxygens oxygen]
breed [monoxides monoxide]
breed [hemoglobins hemoglobin]
breed [hbo1-complexes hbo1-complex]
breed [hbo2-complexes hbo2-complex]
breed [hbcm1-complexes hbcm1-complex]
breed [hbo1cm1-complexes hbo1cm1-complex]
breed [hbcm2-complexes hbcm2-complex]

to setup
  clear-all
  draw-walls
  create-oxygens Initial_Oxygen
  create-monoxides Initial_Carbon_Monoxide
  create-hemoglobins Initial_Hemoglobin
  ask oxygens [be-oxygen]
  ask monoxides [be-monoxide]
  ask hemoglobins [be-hemoglobin]
  ask turtles [randomize-location]
  reset-ticks
end 

; draws the boundaries (walls) of the "billiard table"

to draw-walls
  ; draw left and right walls
  ask patches with [abs pxcor = max-pxcor]
    [ set pcolor gray - 4 ]
  ; draw top and bottom walls
  ask patches with [abs pycor = max-pycor]
    [ set pcolor gray - 4 ]
end 

; set random location

to randomize-location
  setxy random-xcor random-ycor
  if pcolor > 0  
    [ randomize-location ]           ; ...try again                  
end 

to go
  ask turtles [
    left (random 80) - 40
    bounce
    fd 0.05
    react
  ]
  ask monoxides [
;    if ycor > 19.5 [die]
    if abs ycor < 19 [set ycor ycor + 0.03 * cos (ticks / 10 ) ]
    ]
  tick
end 

;; this procedure checks the coordinates and makes the turtles
;; reflect according to the law that the angle of reflection is
;; equal to the angle of incidence

to bounce  ;; turtle procedure
  ; check: hitting left or right wall?
  if abs [pxcor] of patch-ahead 0.01 = max-pxcor
    ; if so, reflect heading around x axis
    [ set heading (- heading) ]
  ; check: hitting top or bottom wall?
  if abs [pycor] of patch-ahead 0.01 = max-pycor
    ; if so, reflect heading around y axis
    [ set heading (180 - heading) ]
  if abs xcor > 19.5 [set xcor int (xcor)]
  if abs ycor > 19.5 [set ycor int (ycor)]
end 

to react
  ask hemoglobins
  [
    if (count oxygens-here > 0) and ( random (10 ^ scale-factor) < k1 )
    [
      hatch-hbo1-complexes 1 [be-hbo1-complex]
      ask one-of oxygens-here [die]
      die
    ]
    if (count monoxides-here > 0) and ( random (10 ^ scale-factor) < k4 )
    [
      hatch-hbcm1-complexes 1 [be-hbcm1-complex]
      ask one-of monoxides-here [die]
      die
    ]
  ]

  ask hbo1-complexes
  [
    if random (10 ^ scale-factor) < k1'
    [
      hatch-hemoglobins 1 [be-hemoglobin]
      hatch-oxygens 1 [be-oxygen]
      die
    ]
    if (count oxygens-here > 0) and ( random (10 ^ scale-factor) < k2 )
    [
      hatch-hbo2-complexes 1 [be-hbo2-complex]
      ask one-of oxygens-here [die]
      die
    ]
    if (count monoxides-here > 0) and ( random (10 ^ scale-factor) < k5 )
    [
      hatch-hbo1cm1-complexes 1 [be-hbo1cm1-complex]
      ask one-of monoxides-here [die]
      die
    ]
  ]
  
  ask hbo2-complexes
  [
    if random (10 ^ scale-factor) < k2'
    [
      hatch-hbo1-complexes 1 [be-hbo1-complex]
      hatch-oxygens 1 [be-oxygen]
      die
    ]
  ]
  
  ask hbcm1-complexes
  [
    if random (10 ^ scale-factor) < k4'
    [
      hatch-hemoglobins 1 [be-hemoglobin]
      hatch-monoxides 1 [be-monoxide]
      die
    ]
    if (count oxygens-here > 0) and ( random (10 ^ scale-factor) < k3 )
    [
      hatch-hbo1cm1-complexes 1 [be-hbo1cm1-complex]
      ask one-of oxygens-here [die]
      die
    ]
    if (count monoxides-here > 0) and ( random (10 ^ scale-factor) < k6 )
    [
      hatch-hbcm2-complexes 1 [be-hbcm2-complex]
      ask one-of monoxides-here [die]
      die
    ]
  ]
  
  ask hbo1cm1-complexes
  [
    if random (10 ^ scale-factor) < k5'
    [
      hatch-hbo1-complexes 1 [be-hbo1-complex]
      hatch-monoxides 1 [be-monoxide]
      die
    ]
    if random (10 ^ scale-factor) < k3'
    [
      hatch-hbcm1-complexes 1 [be-hbcm1-complex]
      hatch-oxygens 1 [be-oxygen]
      die
    ]
  ]
  
  ask hbcm2-complexes
  [
    if random (10 ^ scale-factor) < k6'
    [
      hatch-hbcm1-complexes 1 [be-hbcm1-complex]
      hatch-monoxides 1 [be-monoxide]
      die
    ]
  ]
end 

to be-hemoglobin
  set shape "enzyme act all"
  set color blue
  set size 1
end 

to be-oxygen
  set shape "square"
  set color red
  set size 0.3
end 

to be-monoxide
  set shape "square"
  set color yellow + 3
  set size 0.3
end 

to be-hbo1-complex
  set shape "complex actx allr"
  set color violet
  set size 1
end 

to be-hbo2-complex
  set shape "complex actr allr"
  set color magenta
  set size 1
end 

to be-hbcm1-complex
  set shape "complex actx ally"
  set color blue
  set size 1
end 

to be-hbo1cm1-complex
  set shape "complex actr ally"
  set color violet
  set size 1
end 

to be-hbcm2-complex
  set shape "complex acty ally"
  set color blue
  set size 1
end 

There is only one version of this model, created almost 10 years ago by Anton Weisstein.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.