[Avida-cvs] [Avida2-svn] r391 - in development: . Avida.xcodeproj documentation source/analyze source/main
brysonda@myxo.css.msu.edu
brysonda at myxo.css.msu.edu
Fri Nov 11 08:46:37 PST 2005
Author: brysonda
Date: 2005-11-11 11:45:22 -0500 (Fri, 11 Nov 2005)
New Revision: 391
Modified:
development/Avida.xcodeproj/project.pbxproj
development/documentation/Architecture.graffle
development/source/analyze/cAnalyze.cc
development/source/analyze/cAnalyze.h
development/source/analyze/cAnalyzeGenotype.cc
development/source/analyze/cAnalyzeGenotype.h
development/source/main/cLandscape.cc
development/status.xml
Log:
Merge in changes from trunk r390.
Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj 2005-11-11 03:43:36 UTC (rev 390)
+++ development/Avida.xcodeproj/project.pbxproj 2005-11-11 16:45:22 UTC (rev 391)
@@ -12,7 +12,6 @@
700E2B6F085DE50C00CF158A /* analyze.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3114B0762539E008F7A48 /* analyze.cfg */; };
700E2B70085DE50C00CF158A /* environment.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311800762539F008F7A48 /* environment.cfg */; };
700E2B71085DE50C00CF158A /* events.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311810762539F008F7A48 /* events.cfg */; };
- 700E2B73085DE50C00CF158A /* avida-4stack.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311830762539F008F7A48 /* avida-4stack.cfg */; };
700E2B74085DE50C00CF158A /* inst_set.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311840762539F008F7A48 /* inst_set.4stack */; };
700E2B75085DE50C00CF158A /* inst_set.default in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311850762539F008F7A48 /* inst_set.default */; };
700E2B76085DE50C00CF158A /* organism.default in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311890762539F008F7A48 /* organism.default */; };
@@ -20,7 +19,6 @@
700E2B79085DE50C00CF158A /* organism.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311970762539F008F7A48 /* organism.4stack */; };
700E2B7A085DE50C00CF158A /* organism.parasite in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311980762539F008F7A48 /* organism.parasite */; };
700E2B7B085DE50C00CF158A /* organism.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D330E0854A7B900D7DC8F /* organism.smt */; };
- 700E2B7C085DE50C00CF158A /* genesis.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D33100854A7D700D7DC8F /* genesis.smt */; };
700E2B7D085DE50C00CF158A /* inst_set.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D33270854A90D00D7DC8F /* inst_set.smt */; };
700E2B87085DE54400CF158A /* viewer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 700E2B83085DE50C00CF158A /* viewer */; };
701384340900A45B0087ED2E /* organism.smtx in CopyFiles */ = {isa = PBXBuildFile; fileRef = 701384330900A45B0087ED2E /* organism.smtx */; };
@@ -68,7 +66,6 @@
70486BA00826722F009328F0 /* analyze.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3114B0762539E008F7A48 /* analyze.cfg */; };
70486BA10826722F009328F0 /* environment.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311800762539F008F7A48 /* environment.cfg */; };
70486BA20826722F009328F0 /* events.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311810762539F008F7A48 /* events.cfg */; };
- 70486BA40826722F009328F0 /* avida-4stack.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311830762539F008F7A48 /* avida-4stack.cfg */; };
70486BA50826722F009328F0 /* inst_set.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311840762539F008F7A48 /* inst_set.4stack */; };
70486BA60826722F009328F0 /* inst_set.default in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311850762539F008F7A48 /* inst_set.default */; };
70486BA70826722F009328F0 /* organism.default in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311890762539F008F7A48 /* organism.default */; };
@@ -78,7 +75,6 @@
706D32EA0854A39900D7DC8F /* organism.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311970762539F008F7A48 /* organism.4stack */; };
706D32EB0854A39900D7DC8F /* organism.parasite in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311980762539F008F7A48 /* organism.parasite */; };
706D330F0854A7B900D7DC8F /* organism.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D330E0854A7B900D7DC8F /* organism.smt */; };
- 706D33110854A7D700D7DC8F /* genesis.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D33100854A7D700D7DC8F /* genesis.smt */; };
706D33280854A90D00D7DC8F /* inst_set.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D33270854A90D00D7DC8F /* inst_set.smt */; };
70B0865908F4974300FC65FE /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
70B0865A08F4974300FC65FE /* cLineage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865208F4974300FC65FE /* cLineage.cc */; };
@@ -314,7 +310,6 @@
700E2B6F085DE50C00CF158A /* analyze.cfg in CopyFiles */,
700E2B70085DE50C00CF158A /* environment.cfg in CopyFiles */,
700E2B71085DE50C00CF158A /* events.cfg in CopyFiles */,
- 700E2B73085DE50C00CF158A /* avida-4stack.cfg in CopyFiles */,
700E2B74085DE50C00CF158A /* inst_set.4stack in CopyFiles */,
700E2B75085DE50C00CF158A /* inst_set.default in CopyFiles */,
700E2B76085DE50C00CF158A /* organism.default in CopyFiles */,
@@ -322,7 +317,6 @@
700E2B79085DE50C00CF158A /* organism.4stack in CopyFiles */,
700E2B7A085DE50C00CF158A /* organism.parasite in CopyFiles */,
700E2B7B085DE50C00CF158A /* organism.smt in CopyFiles */,
- 700E2B7C085DE50C00CF158A /* genesis.smt in CopyFiles */,
700E2B7D085DE50C00CF158A /* inst_set.smt in CopyFiles */,
701384340900A45B0087ED2E /* organism.smtx in CopyFiles */,
7013852E0902E36B0087ED2E /* avida.cfg in CopyFiles */,
@@ -339,7 +333,6 @@
70486BA00826722F009328F0 /* analyze.cfg in CopyFiles */,
70486BA10826722F009328F0 /* environment.cfg in CopyFiles */,
70486BA20826722F009328F0 /* events.cfg in CopyFiles */,
- 70486BA40826722F009328F0 /* avida-4stack.cfg in CopyFiles */,
70486BA50826722F009328F0 /* inst_set.4stack in CopyFiles */,
70486BA60826722F009328F0 /* inst_set.default in CopyFiles */,
70486BA70826722F009328F0 /* organism.default in CopyFiles */,
@@ -347,7 +340,6 @@
706D32EA0854A39900D7DC8F /* organism.4stack in CopyFiles */,
706D32EB0854A39900D7DC8F /* organism.parasite in CopyFiles */,
706D330F0854A7B900D7DC8F /* organism.smt in CopyFiles */,
- 706D33110854A7D700D7DC8F /* genesis.smt in CopyFiles */,
706D33280854A90D00D7DC8F /* inst_set.smt in CopyFiles */,
701384350900A45B0087ED2E /* organism.smtx in CopyFiles */,
7013852D0902E36B0087ED2E /* avida.cfg in CopyFiles */,
@@ -428,7 +420,6 @@
70658C59085DF67D00486BED /* libncurses.5.4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.5.4.dylib; path = /usr/lib/libncurses.5.4.dylib; sourceTree = "<absolute>"; };
706D30CC0852328F00D7DC8F /* tInstLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tInstLib.h; sourceTree = "<group>"; };
706D330E0854A7B900D7DC8F /* organism.smt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = organism.smt; sourceTree = "<group>"; };
- 706D33100854A7D700D7DC8F /* genesis.smt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = genesis.smt; sourceTree = "<group>"; };
706D33270854A90D00D7DC8F /* inst_set.smt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = inst_set.smt; sourceTree = "<group>"; };
707A687408E3750300576968 /* cHardwareTracer_SMT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHardwareTracer_SMT.h; sourceTree = "<group>"; };
70B085D108F48C9400FC65FE /* nSpecies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nSpecies.h; sourceTree = "<group>"; };
@@ -721,7 +712,6 @@
DCC3117F0762539F008F7A48 /* organism.noheads */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = organism.noheads; sourceTree = "<group>"; };
DCC311800762539F008F7A48 /* environment.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = environment.cfg; sourceTree = "<group>"; };
DCC311810762539F008F7A48 /* events.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = events.cfg; sourceTree = "<group>"; };
- DCC311830762539F008F7A48 /* avida-4stack.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; path = "avida-4stack.cfg"; sourceTree = "<group>"; };
DCC311840762539F008F7A48 /* inst_set.4stack */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = inst_set.4stack; sourceTree = "<group>"; };
DCC311850762539F008F7A48 /* inst_set.default */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = inst_set.default; sourceTree = "<group>"; };
DCC311860762539F008F7A48 /* inst_set.sex */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = inst_set.sex; sourceTree = "<group>"; };
@@ -1321,8 +1311,6 @@
DCC3114D0762539E008F7A48 /* config */,
DCC311800762539F008F7A48 /* environment.cfg */,
DCC311810762539F008F7A48 /* events.cfg */,
- DCC311830762539F008F7A48 /* avida-4stack.cfg */,
- 706D33100854A7D700D7DC8F /* genesis.smt */,
DCC311840762539F008F7A48 /* inst_set.4stack */,
DCC311850762539F008F7A48 /* inst_set.default */,
DCC311860762539F008F7A48 /* inst_set.sex */,
Modified: development/documentation/Architecture.graffle
===================================================================
--- development/documentation/Architecture.graffle 2005-11-11 03:43:36 UTC (rev 390)
+++ development/documentation/Architecture.graffle 2005-11-11 16:45:22 UTC (rev 391)
@@ -20,12 +20,3217 @@
<key>GraphicsList</key>
<array>
<dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>337</integer>
+ </dict>
+ <key>ID</key>
+ <integer>338</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>40.0521240234375</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{360.868, 176.25}</string>
+ <string>{231.772, 276.25}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
<key>Bounds</key>
- <string>{{350, 150}, {90, 36}}</string>
+ <string>{{164.18, 276.25}, {90, 35}}</string>
<key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>337</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 cDataFileManager}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>309</integer>
+ </dict>
+ <key>ID</key>
+ <integer>336</integer>
+ <key>Points</key>
+ <array>
+ <string>{585.91, 443.625}</string>
+ <string>{539.55, 470.75}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>UMLInheritance</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>312</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>302</integer>
+ </dict>
+ <key>ID</key>
+ <integer>335</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{635.048, 505.75}</string>
+ <string>{664.851, 532.875}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>Pattern</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>333</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>333</integer>
+ </dict>
+ <key>ID</key>
+ <integer>334</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{615.82, 443.625}</string>
+ <string>{615.82, 470.75}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>312</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{577.899, 470.75}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>333</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Instruction}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>308</integer>
+ </dict>
+ <key>ID</key>
+ <integer>332</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>16</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\i\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>16</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\i\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{622.914, 319.375}</string>
+ <string>{595.552, 346.5}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>Pattern</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>300</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>329</integer>
+ </dict>
+ <key>ID</key>
+ <integer>331</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{345.539, 166.265}</string>
+ <string>{88.0227, 217.298}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>328</integer>
+ </dict>
+ <key>ID</key>
+ <integer>330</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{345.539, 161.222}</string>
+ <string>{83.8427, 178.278}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{12.18, 207.312}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>329</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 cAvidaConfig}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{8, 163.25}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>328</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Scheduler}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>323</integer>
+ </dict>
+ <key>ID</key>
+ <integer>327</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>16</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{437.46, 390.5}</string>
+ <string>{437.46, 417.625}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>322</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>322</integer>
+ </dict>
+ <key>ID</key>
+ <integer>326</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{421.085, 311.25}</string>
+ <string>{432.82, 355.5}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>318</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>324</integer>
+ </dict>
+ <key>ID</key>
+ <integer>325</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>5</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{373.689, 176.25}</string>
+ <string>{317.85, 276.25}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{270.157, 276.25}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>324</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 cStats}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{399.539, 417.625}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>323</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Genotype}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{399.539, 355.5}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>322</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Genebank}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>320</integer>
+ </dict>
+ <key>ID</key>
+ <integer>321</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{400.509, 311.25}</string>
+ <string>{360.216, 355.5}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>318</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{306.36, 355.5}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>320</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Phenotype}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>318</integer>
+ </dict>
+ <key>ID</key>
+ <integer>319</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>21.08074951171875</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{387.736, 176.25}</string>
+ <string>{412.168, 276.25}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{356.911, 276.25}, {119.067, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>318</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 ClassificationManager}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>315</integer>
+ </dict>
+ <key>ID</key>
+ <integer>317</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 +}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{110.281, 307.75}</string>
+ <string>{110.281, 340.5}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>314</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>314</integer>
+ </dict>
+ <key>ID</key>
+ <integer>316</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>40.0521240234375</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{345.539, 176.241}</string>
+ <string>{148.203, 267.259}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{72.36, 340.5}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>315</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Location}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{72.36, 261.75}, {75.8427, 46}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>314</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 TopologyManager}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>312</integer>
+ </dict>
+ <key>ID</key>
+ <integer>313</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{588.581, 381.5}</string>
+ <string>{605.138, 408.625}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>308</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{577.899, 408.625}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>312</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Some}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>309</integer>
+ </dict>
+ <key>ID</key>
+ <integer>311</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{518.861, 319.375}</string>
+ <string>{509.64, 346.5}</string>
+ <string>{509.64, 408.625}</string>
+ <string>{509.64, 470.75}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>299</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>308</integer>
+ </dict>
+ <key>ID</key>
+ <integer>310</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>19</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 +}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{539.764, 319.375}</string>
+ <string>{562.944, 346.5}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>299</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{471.719, 470.75}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>309</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Genome}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{539.978, 346.5}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>308</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Hardware}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>299</integer>
+ </dict>
+ <key>ID</key>
+ <integer>307</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{524.809, 257.25}</string>
+ <string>{524.809, 284.375}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>298</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>302</integer>
+ </dict>
+ <key>ID</key>
+ <integer>306</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 +}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{684.079, 381.5}</string>
+ <string>{684.079, 408.625}</string>
+ <string>{684.079, 470.75}</string>
+ <string>{684.078, 532.875}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>301</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>301</integer>
+ </dict>
+ <key>ID</key>
+ <integer>305</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 +}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{652.824, 319.375}</string>
+ <string>{671.822, 346.5}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>300</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>300</integer>
+ </dict>
+ <key>ID</key>
+ <integer>304</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 +}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 *}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{421.382, 165.394}</string>
+ <string>{616.04, 199.5}</string>
+ <string>{636.374, 284.375}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>298</integer>
+ </dict>
+ <key>ID</key>
+ <integer>303</integer>
+ <key>Labels</key>
+ <array>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>19</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>5.3333330154418945</real>
+ <key>Position</key>
+ <real>0.20000000298023224</real>
+ </dict>
+ <dict>
+ <key>Filled</key>
+ <string>NO</string>
+ <key>FixedWidth</key>
+ <real>24.560211181640625</real>
+ <key>Label</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\fs24 \cf0 1}</string>
+ </dict>
+ <key>LabelVisible</key>
+ <string>YES</string>
+ <key>Offset</key>
+ <real>2.6666669845581055</real>
+ <key>Position</key>
+ <real>0.89999997615814209</real>
+ </dict>
+ </array>
+ <key>Points</key>
+ <array>
+ <string>{413.999, 176.25}</string>
+ <string>{494.271, 222.25}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>Cap</key>
+ <integer>0</integer>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Join</key>
+ <integer>0</integer>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>297</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{646.157, 532.875}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>302</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Command}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{646.157, 346.5}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>301</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 CommandLib}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{593.067, 284.375}, {95, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>300</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 cHardwareManager}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{486.888, 284.375}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>299</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 Organism}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{486.888, 222.25}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>298</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 OrgManager}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{345.539, 141.25}, {75.8427, 35}}</string>
+ <key>Class</key>
+ <string>MultiTextGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>297</integer>
+ <key>ListOrientation</key>
+ <string>Vertical</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientAngle</key>
+ <real>304</real>
+ <key>GradientCenter</key>
+ <string>{-0.294118, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>TextList</key>
+ <array>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs18 \cf0 cWorld}</string>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>286</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>296</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{674.748, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>285</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>295</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{610.967, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>284</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>294</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{536.371, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>283</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>293</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{429.512, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>281</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>292</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{236.5, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>287</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>291</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{686.5, 64}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>278</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>290</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{64.5, 69}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>280</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>289</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{128, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>282</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>288</integer>
+ <key>Points</key>
+ <array>
+ <string>{372, 41.25}</string>
+ <string>{329.545, 99}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{653, 64}, {67, 23}}</string>
+ <key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>8</integer>
+ <integer>287</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -38,21 +3243,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cConfig}</string>
+\f0\b\fs20 \cf0 cEventList}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{350, 106}, {115, 36}}</string>
+ <string>{{641.248, 99}, {67, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>7</integer>
+ <integer>286</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -65,21 +3277,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cBirthChamber}</string>
+\f0\b\fs20 \cf0 cTestCPU}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{353, 62}, {103, 36}}</string>
+ <string>{{588.81, 99}, {44.3147, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>6</integer>
+ <integer>285</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -92,21 +3311,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cAvidaTriggers}</string>
+\f0\b\fs20 \cf0 cStats}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{350, 18}, {90, 36}}</string>
+ <string>{{498.371, 99}, {76.0001, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>5</integer>
+ <integer>284</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -119,21 +3345,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cCallbackUtil}</string>
+\f0\b\fs20 \cf0 cPopulation}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{77, 173}, {138, 36}}</string>
+ <string>{{375.091, 99}, {108.843, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>4</integer>
+ <integer>283</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -146,21 +3379,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cPopulationInterface}</string>
+\f0\b\fs20 \cf0 cHardwareManager}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{71, 124}, {160, 36}}</string>
+ <string>{{291.624, 99}, {75.8427, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>3</integer>
+ <integer>282</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -173,21 +3413,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cAvidaDriver_Population}</string>
+\f0\b\fs20 \cf0 cAvidaConfig}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{68, 75}, {123, 36}}</string>
+ <string>{{189, 99}, {95, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>2</integer>
+ <integer>281</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -200,21 +3447,28 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cAvidaDriver_Base}</string>
+\f0\b\fs20 \cf0 cEventManager}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
- <string>{{67, 26}, {95, 36}}</string>
+ <string>{{78, 99}, {100, 23}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
<key>ID</key>
- <integer>1</integer>
+ <integer>280</integer>
<key>Magnets</key>
<array>
<string>{0, 1}</string>
@@ -227,14 +3481,82 @@
<key>Text</key>
<dict>
<key>Text</key>
- <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
-\f0\b\fs24 \cf0 cEnvironment}</string>
+\f0\b\fs20 \cf0 cDataFileManager}</string>
</dict>
</dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{343, 18.25}, {58, 23}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>ID</key>
+ <integer>279</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs20 \cf0 cWorld}</string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{22, 69}, {85, 23}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FontInfo</key>
+ <dict>
+ <key>Font</key>
+ <string>Helvetica-Bold</string>
+ <key>Size</key>
+ <real>11</real>
+ </dict>
+ <key>ID</key>
+ <integer>278</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs20 \cf0 cEnvironment}</string>
+ </dict>
+ </dict>
</array>
<key>GridInfo</key>
<dict>
@@ -274,11 +3596,11 @@
<key>MagnetsVisible</key>
<string>NO</string>
<key>ModificationDate</key>
- <string>2005-09-15 22:17:32 -0400</string>
+ <string>2005-11-11 10:12:08 -0500</string>
<key>Modifier</key>
<string>David</string>
<key>Orientation</key>
- <integer>2</integer>
+ <integer>1</integer>
<key>PageBreaks</key>
<string>YES</string>
<key>PageSetup</key>
@@ -289,7 +3611,7 @@
mZkLTlNQYXBlclNpemWGkoSEhAdOU1ZhbHVlAJSEASqEhAx7X05TU2l6ZT1mZn2cgQMY
gQJkhpKEmZkUTlNWZXJ0aWNhbFBhZ2luYXRpb26GkoSEhAhOU051bWJlcgCdm4SXlwCG
koSZmQ5OU1BNUGFnZUZvcm1hdIaShISEDU5TTXV0YWJsZURhdGEAhIQGTlNEYXRhAJSX
- gR//hAdbODE5MWNdPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
+ gSIkhAdbODc0MGNdPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
PCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUgQ29tcHV0ZXIvL0RURCBQTElT
VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3Qt
MS4wLmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+Y29tLmFw
@@ -301,7 +3623,7 @@
cmludGVyPC9rZXk+CgkJCQk8c3RyaW5nPiA8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFw
cGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCTxzdHJpbmc+Y29tLmFwcGxl
LnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
- dGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRlPjIwMDMtMTAtMzFUMTY6MTc6NTha
+ dGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRlPjIwMDUtMTEtMTFUMTU6MDI6Mjla
PC9kYXRlPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwv
a2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+
Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpv
@@ -324,7 +3646,7 @@
Z2VyPjI8L2ludGVnZXI+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xp
ZW50PC9rZXk+CgkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0
cmluZz4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+
- CgkJCQk8ZGF0ZT4yMDAzLTEwLTMxVDE2OjE3OjU4WjwvZGF0ZT4KCQkJCTxrZXk+Y29t
+ CgkJCQk8ZGF0ZT4yMDA1LTExLTExVDE1OjAyOjI5WjwvZGF0ZT4KCQkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8
L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20u
YXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCTxkaWN0PgoJCTxr
@@ -335,7 +3657,7 @@
CQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5j
bGllbnQ8L2tleT4KCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwv
c3RyaW5nPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tl
- eT4KCQkJCTxkYXRlPjIwMDMtMTAtMzFUMTY6MTc6NThaPC9kYXRlPgoJCQkJPGtleT5j
+ eT4KCQkJCTxkYXRlPjIwMDUtMTEtMTFUMTU6MDI6MjlaPC9kYXRlPgoJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+
MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNv
bS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0
@@ -357,8 +3679,8 @@
bWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+CgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJ
PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJPHN0cmlu
Zz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQk8a2V5PmNvbS5h
- cHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwMy0xMC0z
- MVQxNjoxNzo1OFo8L2RhdGU+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
+ cHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwNS0xMS0x
+ MVQxNTowMjoyOVo8L2RhdGU+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
c3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+
CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnN1YlRpY2tl
dC5wYXBlcl9pbmZvX3RpY2tldDwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUu
@@ -372,8 +3694,8 @@
CQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFw
cGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBs
ZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
- dC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDUtMDktMTZUMDA6NDk6
- MjdaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZs
+ dC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDUtMTEtMTFUMTU6MDI6
+ MzBaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZs
YWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8
L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0
LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBw
@@ -386,79 +3708,90 @@
L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNr
ZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5h
Z2VyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERh
- dGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDA1LTA5LTE2VDAwOjQ5OjI3WjwvZGF0ZT4KCQkJ
+ dGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDA1LTExLTExVDE1OjAyOjMwWjwvZGF0ZT4KCQkJ
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJ
PGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2Rp
- Y3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9r
- ZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9y
- PC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0
- cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5
- PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5Q
- YXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwv
- c3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tl
- eT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJp
- bmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4K
- CQkJCQk8ZGF0ZT4yMDAzLTA3LTAxVDE3OjQ5OjM2WjwvZGF0ZT4KCQkJCQk8a2V5PmNv
- bS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+
- MTwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtl
- eT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9r
- ZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9y
- PC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0
- cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5
- PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5Q
- YXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJ
- CQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8
- cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5
- PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJ
- CQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJpbmc+CgkJ
- CQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCQk8
- ZGF0ZT4yMDAzLTA3LTAxVDE3OjQ5OjM2WjwvZGF0ZT4KCQkJCQk8a2V5PmNvbS5hcHBs
- ZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MTwvaW50
- ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20u
- YXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJ
- CTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5
- PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJpbmc+
+ Y3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNQ3VzdG9tUGFwZXI8
+ L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0
+ b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJp
+ bmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4K
+ CQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFw
+ ZXJJbmZvLlBNQ3VzdG9tUGFwZXI8L2tleT4KCQkJCQk8ZmFsc2UvPgoJCQkJCTxrZXk+
+ Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNv
+ bS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBs
+ ZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDUtMTEtMTFU
+ MTU6MDI6MjlaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5z
+ dGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPC9kaWN0
+ PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl
+ ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUu
+ cHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJp
+ bnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
+ dC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5j
+ b20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0
+ cmluZz5VUyBMZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50
+ aWNrZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdt
+ YW5hZ2VyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1v
+ ZERhdGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDA1LTExLTExVDE1OjAyOjI5WjwvZGF0ZT4K
+ CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ
+ CQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8
+ L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3Rl
+ ZFBhZ2VSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp
+ Y2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFu
+ YWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFy
+ cmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxl
+ LnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxh
+ cnJheT4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+
+ CgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc2PC9yZWFsPgoJCQkJ
+ CTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwv
+ a2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5n
+ PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJ
+ CQkJPGRhdGU+MjAwNS0xMS0xMVQxNTowMjoyOVo8L2RhdGU+CgkJCQkJPGtleT5jb20u
+ YXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8
+ L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+
+ Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tl
+ eT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8
+ L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+
CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJ
PGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJ
bmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJ
PHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFs
Pjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw+NTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk+CgkJ
CQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJCTxz
- dHJpbmc+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0cmluZz4KCQkJCQk8
- a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRl
- PjIwMDMtMDctMDFUMTc6NDk6MzZaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnBy
- aW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4xPC9pbnRlZ2Vy
- PgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBs
- ZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJ
- CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJp
- bmc+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0cmluZz4KCQkJPGtleT5j
- b20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJ
- CQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBN
- UGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5VUyBMZXR0ZXI8L3N0cmluZz4KCQkJ
- CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0
- cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9zdFNjcmlwdDwvc3RyaW5nPgoJCQkJCTxr
- ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRhdGU+
- MjAwMy0wNy0wMVQxNzo0OTozNlo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp
- bnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+
- CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxl
- LnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk+CgkJPHN0cmluZz4wMC4yMDwvc3Ry
- aW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5wcml2YXRlTG9jazwva2V5
- PgoJCTxmYWxzZS8+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tl
- eT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYXBlckluZm9UaWNrZXQ8L3N0cmlu
- Zz4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9u
- PC9rZXk+Cgk8c3RyaW5nPjAwLjIwPC9zdHJpbmc+Cgk8a2V5PmNvbS5hcHBsZS5wcmlu
- dC50aWNrZXQucHJpdmF0ZUxvY2s8L2tleT4KCTxmYWxzZS8+Cgk8a2V5PmNvbS5hcHBs
- ZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJPHN0cmluZz5jb20uYXBwbGUucHJpbnQu
- UGFnZUZvcm1hdFRpY2tldDwvc3RyaW5nPgo8L2RpY3Q+CjwvcGxpc3Q+CoaShJmZFE5T
- VmVydGljYWxseUNlbnRlcmVkhpKEoZuilwGGkoSZmQ9OU1ByaW50QWxsUGFnZXOGkqCS
- hJmZCE5TQ29waWVzhpKokoSZmQtOU1BhcGVyTmFtZYaShJmZBkxldHRlcoaShJmZD05T
- U2NhbGluZ0ZhY3RvcoaShKGbhIQBZqEBhpKEmZkJTlNQcmludGVyhpKEhIQJTlNQcmlu
- dGVyAJSShJmZEGVua2kuY3NlLm1zdS5lZHWGhpKEmZkNTlNSaWdodE1hcmdpboaShKGb
- r6EAhpKEmZkVTlNIb3Jpem9uYWxQYWdpbmF0aW9uhpKgkoSZmRlOU1ByaW50UmV2ZXJz
- ZU9yaWVudGF0aW9uhpKgkoSZmQ5OU0JvdHRvbU1hcmdpboaShKGbr6EAhpKEmZkMTlNM
- ZWZ0TWFyZ2luhpKEoZuvoQCGkoSZmQtOU1RvcE1hcmdpboaShKGbr6EAhpKEmZkKTlNM
- YXN0UGFnZYaShKGbopeCf////4aShJmZC05TRmlyc3RQYWdlhpKokoSZmRZOU0hvcml6
- b250YWxseUNlbnRlcmVkhpKokoSZmQ1OU09yaWVudGF0aW9uhpKohoY=
+ dHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJCTxrZXk+
+ Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRhdGU+MjAw
+ NS0xMS0xMVQxNTowMjoyOVo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
+ dGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJ
+ CQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnBy
+ aW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtl
+ eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5j
+ b20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxl
+ LnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+
+ CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFt
+ ZTwva2V5PgoJCQkJCTxzdHJpbmc+VVMgTGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5j
+ b20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJCTxzdHJpbmc+Y29t
+ LmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxl
+ LnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRhdGU+MjAwNS0xMS0xMVQx
+ NTowMjoyOVo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0
+ YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCQk8L2RpY3Q+
+ CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
+ dC5BUElWZXJzaW9uPC9rZXk+CgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk+
+ Y29tLmFwcGxlLnByaW50LnRpY2tldC5wcml2YXRlTG9jazwva2V5PgoJCTxmYWxzZS8+
+ CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCQk8c3RyaW5n
+ PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm9UaWNrZXQ8L3N0cmluZz4KCTwvZGljdD4K
+ CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk+Cgk8c3Ry
+ aW5nPjAwLjIwPC9zdHJpbmc+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQucHJp
+ dmF0ZUxvY2s8L2tleT4KCTxmYWxzZS8+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNr
+ ZXQudHlwZTwva2V5PgoJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdFRp
+ Y2tldDwvc3RyaW5nPgo8L2RpY3Q+CjwvcGxpc3Q+CoaShJmZFE5TVmVydGljYWxseUNl
+ bnRlcmVkhpKEoZuilwGGkoSZmQ9OU1ByaW50QWxsUGFnZXOGkqCShJmZCE5TQ29waWVz
+ hpKokoSZmQtOU1BhcGVyTmFtZYaShJmZBkxldHRlcoaShJmZD05TU2NhbGluZ0ZhY3Rv
+ coaShKGbhIQBZqEBhpKEmZkJTlNQcmludGVyhpKEhIQJTlNQcmludGVyAJSShJmZCzM1
+ LjguMjIzLjY5hoaShJmZDU5TUmlnaHRNYXJnaW6GkoShm6+hAIaShJmZFU5TSG9yaXpv
+ bmFsUGFnaW5hdGlvboaSoJKEmZkZTlNQcmludFJldmVyc2VPcmllbnRhdGlvboaSoJKE
+ mZkOTlNCb3R0b21NYXJnaW6GkoShm6+hAIaShJmZDE5TTGVmdE1hcmdpboaShKGbr6EA
+ hpKEmZkLTlNUb3BNYXJnaW6GkoShm6+hAIaShJmZCk5TTGFzdFBhZ2WGkoShm6KXgn//
+ //+GkoSZmQtOU0ZpcnN0UGFnZYaSqJKEmZkWTlNIb3Jpem9udGFsbHlDZW50ZXJlZIaS
+ qJKEmZkNTlNPcmllbnRhdGlvboaSqIaG
</data>
<key>ReadOnly</key>
<string>NO</string>
@@ -481,13 +3814,13 @@
<key>CurrentSheet</key>
<string>0</string>
<key>Frame</key>
- <string>{{753, 258}, {787, 736}}</string>
+ <string>{{307, 100}, {813, 754}}</string>
<key>ShowRuler</key>
<true/>
<key>ShowStatusBar</key>
<true/>
<key>VisibleRegion</key>
- <string>{{-11, -8}, {756, 592}}</string>
+ <string>{{-24, -17}, {782, 610}}</string>
<key>Zoom</key>
<string>1</string>
</dict>
Modified: development/source/analyze/cAnalyze.cc
===================================================================
--- development/source/analyze/cAnalyze.cc 2005-11-11 03:43:36 UTC (rev 390)
+++ development/source/analyze/cAnalyze.cc 2005-11-11 16:45:22 UTC (rev 391)
@@ -64,7 +64,7 @@
: cur_batch(0)
, m_world(world)
, inst_set(world->GetHardwareManager().GetInstSet())
-, verbose(false)
+, verbose(nAnalyze::VERBOSE_QUIET)
, interactive_depth(0)
{
@@ -267,7 +267,7 @@
<< endl;
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Loading in " << num_steps
<< " detail files from update " << start_UD
<< " to update " << stop_UD
@@ -826,7 +826,7 @@
exit(1);
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Loading file of type: " << filetype << endl;
}
@@ -881,7 +881,7 @@
// If no arguments are passed in, just find max num_cpus.
if (cur_string.GetSize() == 0) cur_string = "num_cpus";
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Reducing batch " << cur_batch << " to genotypes: ";
}
@@ -889,7 +889,7 @@
tListPlus<cAnalyzeGenotype> found_list;
while (cur_string.CountNumWords() > 0) {
cString gen_desc(cur_string.PopWord());
- if (verbose) cout << gen_desc << " ";
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << gen_desc << " ";
// Determine by lin_type which genotype were are tracking...
cAnalyzeGenotype * found_gen = PopGenotype(gen_desc, cur_batch);
@@ -923,7 +923,7 @@
return;
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Reducing batch " << cur_batch << " to organisms: " << endl;
}
@@ -935,7 +935,7 @@
while (cur_string.CountNumWords() > 0) {
cString org_desc(cur_string.PopWord());
- if (verbose) cout << org_desc << " ";
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << org_desc << " ";
// Determine by org_desc which genotype were are tracking...
if (org_desc == "random") {
@@ -992,7 +992,7 @@
cString lin_type = "num_cpus";
if (cur_string.CountNumWords() > 0) lin_type = cur_string.PopWord();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Reducing batch " << cur_batch
<< " to " << lin_type << " lineage " << endl;
} else cout << "Performing lineage scan..." << endl;
@@ -1045,7 +1045,7 @@
batch[cur_batch].List().PushRear(found_list.Pop());
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Lineage has " << total_kept << " genotypes; "
<< total_removed << " were removed." << endl;
}
@@ -1072,7 +1072,7 @@
cString parent_method = "rec_region_size";
if (cur_string.CountNumWords() > 0) parent_method = cur_string.PopWord();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Reducing batch " << cur_batch
<< " to " << lin_type << " sexual lineage "
<< " using " << parent_method << " criteria." << endl;
@@ -1200,7 +1200,7 @@
batch[cur_batch].List().PushRear(found_list.Pop());
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Sexual lineage has " << total_kept << " genotypes; "
<< total_removed << " were removed." << endl;
}
@@ -1219,7 +1219,7 @@
cString clade_type( cur_string.PopWord() );
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Reducing batch " << cur_batch
<< " to clade " << clade_type << "." << endl;
} else cout << "Performing clade scan..." << endl;
@@ -1273,7 +1273,7 @@
batch[cur_batch].List().PushRear(found_list.Pop());
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Clade has " << total_kept << " genotypes; "
<< total_removed << " were removed." << endl;
}
@@ -1293,7 +1293,7 @@
test_viable = cur_string.PopWord().AsDouble();
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Sampling " << fraction << " organisms from batch "
<< cur_batch << "." << endl;
}
@@ -1360,7 +1360,7 @@
}
int num_genotypes = batch[cur_batch].List().GetSize();
- if (verbose) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Removed " << org_count - new_org_count
<< " organisms (" << init_genotypes - num_genotypes
<< " genotypes); " << new_org_count
@@ -1384,7 +1384,7 @@
test_viable = cur_string.PopWord().AsDouble();
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Sampling " << fraction << " genotypes from batch "
<< cur_batch << "." << endl;
}
@@ -1403,7 +1403,7 @@
}
int num_genotypes = batch[cur_batch].List().GetSize();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Removed " << init_genotypes - num_genotypes
<< " genotypes; " << num_genotypes << " remaining."
<< endl;
@@ -1435,7 +1435,7 @@
void cAnalyze::CommandPrint(cString cur_string)
{
- if (verbose == true) cout << "Printing batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Printing batch " << cur_batch << endl;
else cout << "Printing organisms..." << endl;
cString directory = PopDirectory(cur_string, "genebank/");
@@ -1454,13 +1454,13 @@
}
cTestUtil::PrintGenome(m_world, genotype->GetGenome(), filename);
- if (verbose) cout << "Printing: " << filename << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Printing: " << filename << endl;
}
}
void cAnalyze::CommandTrace(cString cur_string)
{
- if (verbose == true) cout << "Tracing batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Tracing batch " << cur_batch << endl;
else cout << "Tracing organisms..." << endl;
int words = cur_string.CountNumWords();
@@ -1511,7 +1511,7 @@
m_world->GetTestCPU().TestGenome(test_info, genotype->GetGenome());
- if (verbose) cout << " Tracing: " << filename << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " Tracing: " << filename << endl;
m_world->GetDataFileManager().Remove(filename);
}
@@ -1526,7 +1526,7 @@
void cAnalyze::CommandPrintTasks(cString cur_string)
{
- if (verbose == true) cout << "Printing tasks in batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Printing tasks in batch " << cur_batch << endl;
else cout << "Printing tasks..." << endl;
// Load in the variables...
@@ -1547,7 +1547,7 @@
void cAnalyze::CommandDetail(cString cur_string)
{
- if (verbose == true) cout << "Detailing batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Detailing batch " << cur_batch << endl;
else cout << "Detailing..." << endl;
// Load in the variables...
@@ -1582,7 +1582,7 @@
void cAnalyze::CommandDetailTimeline(cString cur_string)
{
- if (verbose == true) cout << "Detailing batch "
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Detailing batch "
<< cur_batch << " based on time" << endl;
else cout << "Detailing..." << endl;
@@ -1594,7 +1594,7 @@
if (cur_string.GetSize() != 0) time_step = cur_string.PopWord().AsInt();
if (cur_string.GetSize() != 0) max_time = cur_string.PopWord().AsInt();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Time step = " << time_step << endl
<< " Max time = " << max_time << endl;
}
@@ -1686,6 +1686,11 @@
int cur_time = 0;
while (cur_genotype != NULL && cur_time <= max_time) {
+ if (verbose >= nAnalyze::VERBOSE_DETAILS) {
+ cout << "Detailing genotype " << cur_genotype->GetID()
+ << " at depth " << cur_genotype->GetDepth()
+ << endl;
+ }
output_it.Reset();
tDataEntryCommand<cAnalyzeGenotype> * data_command = NULL;
if (format_type == FILE_TYPE_HTML) {
@@ -1777,7 +1782,7 @@
void cAnalyze::CommandDetailAverage(cString cur_string)
{
- if (verbose == true) cout << "Average detailing batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Average detailing batch " << cur_batch << endl;
else cout << "Detailing..." << endl;
// Load in the variables...
@@ -1812,7 +1817,7 @@
if (cur_string.GetSize() != 0) keyword = cur_string.PopWord();
if (cur_string.GetSize() != 0) filename = cur_string.PopWord();
- if (verbose == true) cout << "Detailing batches for " << keyword << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Detailing batches for " << keyword << endl;
else cout << "Detailing Batches..." << endl;
// Scan the functions list for the keyword we need...
@@ -2080,7 +2085,7 @@
void cAnalyze::CommandHistogram(cString cur_string)
{
- if (verbose == true) cout << "Histogram batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Histogram batch " << cur_batch << endl;
else cout << "Histograming..." << endl;
// Load in the variables...
@@ -2254,7 +2259,7 @@
void cAnalyze::CommandPrintPhenotypes(cString cur_string)
{
- if (verbose == true) cout << "Printing phenotypes in batch "
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Printing phenotypes in batch "
<< cur_batch << endl;
else cout << "Printing phenotypes..." << endl;
@@ -2341,7 +2346,7 @@
// Print various diversity metrics from the current batch of genotypes...
void cAnalyze::CommandPrintDiversity(cString cur_string)
{
- if (verbose == true) cout << "Printing diversity data for batch "
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Printing diversity data for batch "
<< cur_batch << endl;
else cout << "Printing diversity data..." << endl;
@@ -2448,9 +2453,7 @@
int update = cur_string.PopWord().AsInt();
// Get the directory
- cString dir = cur_string.PopWord();
- cString defaultDir = "community_cpx/";
- cString directory = PopDirectory(dir, defaultDir);
+ cString directory = PopDirectory(cur_string, "community_cpx/");
// Get the file name that saves the result
cString filename = cur_string.PopWord();
@@ -2470,7 +2473,7 @@
cpx_fp << endl;
/////////////////////////////////////////////////////////////////////////////////
- // Loop through all of the genotypes in all batches and build id vs. genotype map
+ // Loop through all genotypes in all batches and build id vs. genotype map
map<int, cAnalyzeGenotype *> genotype_database;
for (int i = 0; i < MAX_BATCHES; ++ i) {
@@ -2750,9 +2753,6 @@
vector<bool> one_line_neutral(num_insts, false);
vector< vector<bool> > neutral_mut(length_genome, one_line_neutral);
vector< vector<bool> > alive_mut(length_genome, one_line_neutral);
- // if (verbose == true) {
- // PrintTestCPUResources("");
- // }
genotype->Recalculate();
double base_fitness = genotype->GetFitness();
@@ -3054,9 +3054,6 @@
// Point mutation at all lines of code to look for neutral mutation
cout << "Test point mutation for genotype " << genotype->GetID() << endl;
tMatrix<double> prob(length_genome, num_insts);
- // if (verbose == true) {
- // PrintTestCPUResources("");
- // }
genotype->Recalculate();
double base_fitness = genotype->GetFitness();
@@ -3266,7 +3263,7 @@
void cAnalyze::CommandLandscape(cString cur_string)
{
- if (verbose == true) cout << "Landscaping batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Landscaping batch " << cur_batch << endl;
else cout << "Landscapping..." << endl;
// Load in the variables...
@@ -3293,7 +3290,7 @@
void cAnalyze::AnalyzeEpistasis(cString cur_string)
{
- if (verbose == true) cout << "Epistasis on " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Epistasis on " << cur_batch << endl;
else cout << "Calculating epistasis values..." << endl;
// Load in the variables...
@@ -3519,7 +3516,7 @@
if (cur_string.GetSize() > 0) del_mut_prob = cur_string.PopWord().AsDouble();
if (cur_string.GetSize() > 0) count_threshold = cur_string.PopWord().AsInt();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "...using:"
<< " filename='" << filename << "'"
<< " num_tests=" << num_tests
@@ -3610,14 +3607,14 @@
// Calculate the complexities....
genotype->Recalculate();
- double start_complexity = genotype->GetComplexity();
+ double start_complexity = genotype->GetKO_Complexity();
double start_fitness = genotype->GetFitness();
int start_length = genotype->GetLength();
int start_gest = genotype->GetGestTime();
cAnalyzeGenotype new_genotype(m_world, mod_genome, inst_set);
new_genotype.Recalculate();
- double end_complexity = new_genotype.GetComplexity();
+ double end_complexity = new_genotype.GetKO_Complexity();
double complexity_change = end_complexity - start_complexity;
double end_fitness = new_genotype.GetFitness();
int end_length = new_genotype.GetLength();
@@ -3673,7 +3670,7 @@
tListIterator<cAnalyzeGenotype> batch_it(batch[cur_batch].List());
cAnalyzeGenotype * genotype = NULL;
while ((genotype = batch_it.Next()) != NULL) {
- if (verbose == true) cout << " Knockout: " << genotype->GetName() << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " Knockout: " << genotype->GetName() << endl;
// Calculate the stats for the genotype we're working with...
genotype->Recalculate();
@@ -3684,10 +3681,12 @@
cGenome mod_genome(base_genome);
// Loop through all the lines of code, testing the removal of each.
+ // -2=lethal, -1=detrimental, 0=neutral, 1=beneficial
int dead_count = 0;
int neg_count = 0;
int neut_count = 0;
int pos_count = 0;
+ tArray<int> ko_effect(max_line);
for (int line_num = 0; line_num < max_line; line_num++) {
// Save a copy of the current instruction and replace it with "NULL"
int cur_inst = base_genome[line_num].GetOp();
@@ -3696,21 +3695,85 @@
ko_genotype.Recalculate();
double ko_fitness = ko_genotype.GetFitness();
- if (ko_fitness == 0.0) dead_count++;
- else if (ko_fitness < base_fitness) neg_count++;
- else if (ko_fitness == base_fitness) neut_count++;
- else if (ko_fitness > base_fitness) pos_count++;
- else cerr << "ERROR: illegal state in AnalyzeKnockouts()" << endl;
+ if (ko_fitness == 0.0) {
+ dead_count++;
+ ko_effect[line_num] = -2;
+ } else if (ko_fitness < base_fitness) {
+ neg_count++;
+ ko_effect[line_num] = -1;
+ } else if (ko_fitness == base_fitness) {
+ neut_count++;
+ ko_effect[line_num] = 0;
+ } else if (ko_fitness > base_fitness) {
+ pos_count++;
+ ko_effect[line_num] = 1;
+ } else {
+ cerr << "ERROR: illegal state in AnalyzeKnockouts()" << endl;
+ }
// Reset the mod_genome back to the original sequence.
mod_genome[line_num].SetOp(cur_inst);
}
+
+ tArray<int> ko_pair_effect(ko_effect);
+ if (max_knockouts > 1) {
+ for (int line1 = 0; line1 < max_line; line1++) {
+ for (int line2 = line1+1; line2 < max_line; line2++) {
+ int cur_inst1 = base_genome[line1].GetOp();
+ int cur_inst2 = base_genome[line2].GetOp();
+ mod_genome[line1] = null_inst;
+ mod_genome[line2] = null_inst;
+ cAnalyzeGenotype ko_genotype(mod_genome, ko_inst_set);
+ ko_genotype.Recalculate();
+
+ double ko_fitness = ko_genotype.GetFitness();
+
+ // If both individual knockouts are both harmful, but in combination
+ // they are neutral or even beneficial, they should not count as
+ // information.
+ if (ko_fitness >= base_fitness &&
+ ko_effect[line1] < 0 && ko_effect[line2] < 0) {
+ ko_pair_effect[line1] = 0;
+ ko_pair_effect[line2] = 0;
+ }
+
+ // If the individual knockouts are both neutral (or beneficial?),
+ // but in combination they are harmful, they are likely redundant
+ // to each other. For now, count them both as information.
+ if (ko_fitness < base_fitness &&
+ ko_effect[line1] >= 0 && ko_effect[line2] >= 0) {
+ ko_pair_effect[line1] = -1;
+ ko_pair_effect[line2] = -1;
+ }
+
+ // Reset the mod_genome back to the original sequence.
+ mod_genome[line1].SetOp(cur_inst1);
+ mod_genome[line2].SetOp(cur_inst2);
+ }
+ }
+ }
+ int pair_dead_count = 0;
+ int pair_neg_count = 0;
+ int pair_neut_count = 0;
+ int pair_pos_count = 0;
+ for (int i = 0; i < max_line; i++) {
+ if (ko_pair_effect[i] == -2) pair_dead_count++;
+ else if (ko_pair_effect[i] == -1) pair_neg_count++;
+ else if (ko_pair_effect[i] == 0) pair_neut_count++;
+ else if (ko_pair_effect[i] == 1) pair_pos_count++;
+ }
+
+ // Output data...
df.Write(genotype->GetID(), "Genotype ID");
df.Write(dead_count, "Count of lethal knockouts");
df.Write(neg_count, "Count of detrimental knockouts");
df.Write(neut_count, "Count of neutral knockouts");
df.Write(pos_count, "Count of beneficial knockouts");
+ df.Write(pair_dead_count, "Count of lethal knockouts after paired knockout tests.");
+ df.Write(pair_neg_count, "Count of detrimental knockouts after paired knockout tests.");
+ df.Write(pair_neut_count, "Count of neutral knockouts after paired knockout tests.");
+ df.Write(pair_pos_count, "Count of beneficial knockouts after paired knockout tests.");
df.Endl();
}
}
@@ -3718,7 +3781,7 @@
void cAnalyze::CommandFitnessMatrix(cString cur_string)
{
- if (verbose == true) cout << "Calculating fitness matrix for batch " << cur_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Calculating fitness matrix for batch " << cur_batch << endl;
else cout << "Calculating fitness matrix..." << endl;
cout << "Warning: considering only first genotype of the batch!" << endl;
@@ -3805,7 +3868,7 @@
const int num_cols = output_list.GetSize();
// Give some information in verbose mode.
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " outputing as ";
if (print_mode == 1) cout << "boolean ";
if (file_type == FILE_TYPE_TEXT) {
@@ -3832,7 +3895,7 @@
tListIterator<cAnalyzeGenotype> batch_it(batch[cur_batch].List());
cAnalyzeGenotype * genotype = NULL;
while ((genotype = batch_it.Next()) != NULL) {
- if (verbose == true) cout << " Mapping " << genotype->GetName() << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " Mapping " << genotype->GetName() << endl;
// Construct this filename...
cString filename;
@@ -4078,7 +4141,7 @@
const int num_cols = output_list.GetSize();
// Give some information in verbose mode.
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " outputing as ";
if (print_mode == 1) cout << "boolean ";
cout << "text files." << endl;
@@ -4163,7 +4226,7 @@
int num_cpus = genotype->GetNumCPUs();
- if (verbose == true) cout << " Mapping " << genotype->GetName() << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " Mapping " << genotype->GetName() << endl;
// Calculate the stats for the genotype we're working with...
genotype->Recalculate();
@@ -4430,7 +4493,7 @@
if (arg_list.PopString("html") != "") file_type = FILE_TYPE_HTML;
// Give some information in verbose mode.
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " outputing as ";
if (file_type == FILE_TYPE_TEXT) cout << "text files." << endl;
else cout << "HTML files." << endl;
@@ -4443,7 +4506,7 @@
tListIterator<cAnalyzeGenotype> batch_it(batch[cur_batch].List());
cAnalyzeGenotype * genotype = NULL;
while ((genotype = batch_it.Next()) != NULL) {
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Creating mutation map for " << genotype->GetName() << endl;
}
@@ -4738,7 +4801,7 @@
int tmp = batch1; batch1 = batch2; batch2 = tmp;
}
- if (verbose == false) {
+ if (verbose <= nAnalyze::VERBOSE_QUIET) {
cout << "Calculating Hamming Distance... ";
cout.flush();
} else {
@@ -4805,7 +4868,7 @@
int tmp = batch1; batch1 = batch2; batch2 = tmp;
}
- if (verbose == false) {
+ if (verbose <= nAnalyze::VERBOSE_QUIET) {
cout << "Calculating Levenstein Distance... ";
cout.flush();
} else {
@@ -4872,7 +4935,7 @@
int tmp = batch1; batch1 = batch2; batch2 = tmp;
}
- if (verbose == false) cout << "Calculating Species Distance... " << endl;
+ if (verbose <= nAnalyze::VERBOSE_QUIET) cout << "Calculating Species Distance... " << endl;
else cout << "Calculating Species Distance between batch "
<< batch1 << " and " << batch2 << endl;
@@ -4988,7 +5051,7 @@
int tmp = batch1; batch1 = batch2; batch2 = tmp;
}
- if (verbose == false) cout << "Creating recombinants... " << endl;
+ if (verbose <= nAnalyze::VERBOSE_QUIET) cout << "Creating recombinants... " << endl;
else cout << "Creating recombinants between batch "
<< batch1 << " and " << batch2 << endl;
@@ -5082,7 +5145,7 @@
cout << "Aligning sequences..." << endl;
- if (batch[cur_batch].IsLineage() == false && verbose == true) {
+ if (batch[cur_batch].IsLineage() == false && verbose >= nAnalyze::VERBOSE_ON) {
cerr << " Warning: sequences may not be a consecutive lineage."
<< endl;
}
@@ -5203,7 +5266,7 @@
while ((child_genotype = batch_it.Next()) != NULL) {
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Analyze new information for " << child_genotype->GetName() << endl;
}
@@ -5391,7 +5454,7 @@
for (grid_side = 5; grid_side < 100; grid_side += 5) {
if (grid_side * grid_side >= max_count) break;
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "...assuming population size "
<< grid_side << "x" << grid_side << "." << endl;
}
@@ -5504,8 +5567,7 @@
// Count the number of diffs between the two strings we're interested in.
const int total_diffs = cStringUtil::Distance(first_seq, last_seq);
- if (verbose) cout << " " << total_diffs << " mutations being tested."
- << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " " << total_diffs << " mutations being tested." << endl;
// Locate each difference.
int * mut_positions = new int[total_diffs];
@@ -5626,7 +5688,7 @@
void cAnalyze::AnalyzeInstructions(cString cur_string)
{
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Analyzing Instructions in batch " << cur_batch << endl;
}
else cout << "Analyzeing Instructions..." << endl;
@@ -5766,7 +5828,7 @@
void cAnalyze::AnalyzeInstPop(cString cur_string)
{
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Analyzing Instructions in batch " << cur_batch << endl;
}
else cout << "Analyzeing Instructions..." << endl;
@@ -5824,7 +5886,7 @@
void cAnalyze::AnalyzeBranching(cString cur_string)
{
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Analyzing branching patterns in batch " << cur_batch << endl;
}
else cout << "Analyzeing Branches..." << endl;
@@ -5842,13 +5904,13 @@
void cAnalyze::AnalyzeMutationTraceback(cString cur_string)
{
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Analyzing mutation traceback in batch " << cur_batch << endl;
}
else cout << "Analyzing mutation traceback..." << endl;
// This works best on lineages, so warn if we don't have one.
- if (batch[cur_batch].IsLineage() == false && verbose == true) {
+ if (batch[cur_batch].IsLineage() == false && verbose >= nAnalyze::VERBOSE_ON) {
cerr << " Warning: trying to traceback mutations outside of lineage."
<< endl;
}
@@ -5999,7 +6061,7 @@
ofstream& lineage_fp = m_world->GetDataFileOFStream(lineage_filename);
while ((genotype = batch_it.Next()) != NULL) {
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << " Analyzing complexity for " << genotype->GetName() << endl;
}
@@ -6110,7 +6172,7 @@
// where i is the batchFrequency
for(int count=0; genotype != NULL && count < batchFrequency - 1; count++) {
genotype = batch_it.Next();
- if(genotype != NULL && verbose == true) {
+ if(genotype != NULL && verbose >= nAnalyze::VERBOSE_ON) {
cout << "Skipping: " << genotype->GetName() << endl;
}
}
@@ -6211,7 +6273,7 @@
cout << "Printing helpfiles in: " << cur_string << endl;
cHelpManager help_control;
- if (verbose == true) help_control.SetVerbose();
+ if (verbose >= nAnalyze::VERBOSE_ON) help_control.SetVerbose();
while (cur_string.GetSize() > 0) {
help_control.LoadFile(cur_string.PopWord());
}
@@ -6224,7 +6286,7 @@
cout << "Printing documentation files in: " << cur_string << endl;
cHelpManager help_control;
- if (verbose == true) help_control.SetVerbose();
+ if (verbose >= nAnalyze::VERBOSE_ON) help_control.SetVerbose();
while (cur_string.GetSize() > 0) {
help_control.LoadFile(cur_string.PopWord());
}
@@ -6248,7 +6310,7 @@
cString & cur_variable = GetVariable(var);
cur_variable = cur_string.PopWord();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Setting " << var << " to " << cur_variable << endl;
}
}
@@ -6259,7 +6321,7 @@
if (cur_string.CountNumWords() > 0) {
next_batch = cur_string.PopWord().AsInt();
}
- if (verbose) cout << "Setting current batch to " << next_batch << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Setting current batch to " << next_batch << endl;
if (next_batch >= MAX_BATCHES) {
cerr << " Error: max batches is " << MAX_BATCHES << endl;
exit(1);
@@ -6271,7 +6333,7 @@
void cAnalyze::BatchName(cString cur_string)
{
if (cur_string.CountNumWords() == 0) {
- if (verbose) cout << " Warning: No name given in NAME_BATCH!" << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " Warning: No name given in NAME_BATCH!" << endl;
return;
}
@@ -6281,11 +6343,11 @@
void cAnalyze::BatchTag(cString cur_string)
{
if (cur_string.CountNumWords() == 0) {
- if (verbose) cout << " Warning: No tag given in TAG_BATCH!" << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << " Warning: No tag given in TAG_BATCH!" << endl;
return;
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Tagging batch " << cur_batch
<< " with tag '" << cur_string << "'" << endl;
}
@@ -6303,7 +6365,7 @@
int batch_id = cur_batch;
if (cur_string.CountNumWords() > 0) batch_id = cur_string.PopWord().AsInt();
- if (verbose) cout << "Purging batch " << batch_id << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Purging batch " << batch_id << endl;
while (batch[batch_id].List().GetSize() > 0) {
delete batch[batch_id].List().Pop();
@@ -6324,9 +6386,8 @@
int batch_to = cur_batch;
if (cur_string.GetSize() > 0) batch_to = cur_string.PopWord().AsInt();
- if (verbose == true) {
- cout << "Duplicating from batch " << batch_from
- << " to batch " << batch_to << "." << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) {
+ cout << "Duplicating from batch " << batch_from << " to batch " << batch_to << "." << endl;
}
tListIterator<cAnalyzeGenotype> batch_from_it(batch[batch_from].List());
@@ -6367,11 +6428,11 @@
m_world->GetTestCPU().UseResources() = true;
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Running batch " << cur_batch << " through test CPUs..." << endl;
} else cout << "Running through test CPUs..." << endl;
- if (verbose == true && batch[cur_batch].IsLineage() == false) {
+ if (verbose >= nAnalyze::VERBOSE_ON && batch[cur_batch].IsLineage() == false) {
cerr << " Warning: batch may not be a linege; "
<< "parent and ancestor distances may not be correct" << endl;
}
@@ -6394,9 +6455,6 @@
// If the previous genotype was the parent of this one, pass in a pointer
// to it for improved recalculate (such as distance to parent, etc.)
- // if (verbose == true) {
- // PrintTestCPUResources("");
- // }
if (last_genotype != NULL &&
genotype->GetParentID() == last_genotype->GetID()) {
genotype->Recalculate(last_genotype);
@@ -6416,7 +6474,7 @@
void cAnalyze::BatchRename(cString cur_string)
{
- if (verbose == false) cout << "Renaming organisms..." << endl;
+ if (verbose <= nAnalyze::VERBOSE_QUIET) cout << "Renaming organisms..." << endl;
else cout << "Renaming organisms in batch " << cur_batch << endl;
// If a number is given with rename, start at that number...
@@ -6456,18 +6514,33 @@
cerr << "Debug Args: " << cur_string << endl;
}
-void cAnalyze::ToggleVerbose(cString cur_string)
+void cAnalyze::CommandVerbose(cString cur_string)
{
- // No Args needed...
- (void) cur_string;
+ cur_string.ToUpper();
- if (verbose == false) {
- cout << "Using verbose log messages..." << endl;
- verbose = true;
- } else {
- cout << "Using non-verbose log messages..." << endl;
- verbose = false;
+ // If no arguments are given, assume a basic toggle.
+ if (cur_string.GetSize() == 0 && verbose <= nAnalyze::VERBOSE_QUIET) {
+ verbose = nAnalyze::VERBOSE_ON;
}
+ else if (cur_string.GetSize() == 0 && verbose >= nAnalyze::VERBOSE_ON) {
+ verbose = nAnalyze::VERBOSE_QUIET;
+ }
+
+ // Otherwise, read in the argument to decide the new mode.
+ else if (cur_string == "SILENT") verbose = nAnalyze::VERBOSE_SILENT;
+ else if (cur_string == "QUIET") verbose = nAnalyze::VERBOSE_QUIET;
+ else if (cur_string == "OFF") verbose = nAnalyze::VERBOSE_QUIET;
+ else if (cur_string == "ON") verbose = nAnalyze::VERBOSE_ON;
+ else if (cur_string == "DETAILS") verbose = nAnalyze::VERBOSE_DETAILS;
+ else if (cur_string == "HIGH") verbose = nAnalyze::VERBOSE_DETAILS;
+ // Print out new verbose level (nothing for silent!)
+ if (verbose == nAnalyze::VERBOSE_QUIET) {
+ cout << "Verbose QUIET: Using minimal log messages..." << endl;
+ } else if (verbose == nAnalyze::VERBOSE_ON) {
+ cout << "Verbose ON: Using verbose log messages..." << endl;
+ } else if (verbose == nAnalyze::VERBOSE_DETAILS) {
+ cout << "Verbose DETAILS: Using detailed log messages..." << endl;
+ }
}
void cAnalyze::IncludeFile(cString cur_string)
@@ -6533,7 +6606,7 @@
exit(1);
}
- if (verbose) cout << "Creating function: " << fun_name << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Creating function: " << fun_name << endl;
// Create the new function...
cAnalyzeFunction * new_function = new cAnalyzeFunction(fun_name);
@@ -6547,7 +6620,7 @@
bool cAnalyze::FunctionRun(const cString & fun_name, cString args)
{
- if (verbose) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Running function: " << fun_name << endl;
// << " with args: " << args << endl;
}
@@ -6605,7 +6678,7 @@
void cAnalyze::CommandForeach(cString cur_string,
tList<cAnalyzeCommand> & clist)
{
- if (verbose) cout << "Initiating Foreach loop..." << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Initiating Foreach loop..." << endl;
cString var = cur_string.PopWord();
int num_args = cur_string.CountNumWords();
@@ -6615,13 +6688,13 @@
for (int i = 0; i < num_args; i++) {
cur_variable = cur_string.PopWord();
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Foreach: setting " << var << " to " << cur_variable << endl;
}
ProcessCommands(clist);
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Ending Foreach on " << var << endl;
}
}
@@ -6630,7 +6703,7 @@
void cAnalyze::CommandForRange(cString cur_string,
tList<cAnalyzeCommand> & clist)
{
- if (verbose) cout << "Initiating FORRANGE loop..." << endl;
+ if (verbose >= nAnalyze::VERBOSE_ON) cout << "Initiating FORRANGE loop..." << endl;
int num_args = cur_string.CountNumWords();
if (num_args < 3) {
@@ -6654,7 +6727,7 @@
for (int i = (int) min_val; i <= (int) max_val; i += (int) step_val) {
cur_variable.Set("%d", i);
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "FORRANGE: setting " << var << " to " << cur_variable << endl;
}
ProcessCommands(clist);
@@ -6663,14 +6736,14 @@
for (double i = min_val; i <= max_val; i += step_val) {
cur_variable.Set("%f", i);
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "FORRANGE: setting " << var << " to " << cur_variable << endl;
}
ProcessCommands(clist);
}
}
- if (verbose == true) {
+ if (verbose >= nAnalyze::VERBOSE_ON) {
cout << "Ending FORRANGE on " << var << endl;
}
}
@@ -7243,7 +7316,7 @@
AddLibraryDef("STATUS", &cAnalyze::PrintStatus);
AddLibraryDef("DEBUG", &cAnalyze::PrintDebug);
AddLibraryDef("ECHO", &cAnalyze::PrintDebug);
- AddLibraryDef("VERBOSE", &cAnalyze::ToggleVerbose);
+ AddLibraryDef("VERBOSE", &cAnalyze::CommandVerbose);
AddLibraryDef("INCLUDE", &cAnalyze::IncludeFile);
AddLibraryDef("SYSTEM", &cAnalyze::CommandSystem);
AddLibraryDef("INTERACTIVE", &cAnalyze::CommandInteractive);
Modified: development/source/analyze/cAnalyze.h
===================================================================
--- development/source/analyze/cAnalyze.h 2005-11-11 03:43:36 UTC (rev 390)
+++ development/source/analyze/cAnalyze.h 2005-11-11 16:45:22 UTC (rev 391)
@@ -28,6 +28,13 @@
#define MAX_BATCHES 2000
+namespace nAnalyze {
+ const int VERBOSE_SILENT = 0; // No output at all
+ const int VERBOSE_QUIET = 1; // Notification at start of commands.
+ const int VERBOSE_ON = 2; // Verbose output, detailing progress
+ const int VERBOSE_DETAILS = 3; // High level of details, as available.
+}
+
// cAnalyze : The master analyze object.
class cGenotypeBatch; // array
@@ -66,8 +73,8 @@
// is a pair of the update and a vector of the resource concentrations
std::vector<std::pair<int, std::vector<double> > > resources;
- bool verbose; // Should details be output to command line?
- int interactive_depth; // How nested are we if in interactive mode?
+ int verbose; // How much information to print?
+ int interactive_depth; // How nested are we if in interactive mode?
tList< tDataEntryBase<cAnalyzeGenotype> > genotype_data_list;
@@ -209,7 +216,7 @@
void BatchRename(cString cur_string);
void PrintStatus(cString cur_string);
void PrintDebug(cString cur_string);
- void ToggleVerbose(cString cur_string);
+ void CommandVerbose(cString cur_string);
void IncludeFile(cString cur_string);
void CommandSystem(cString cur_string);
void CommandInteractive(cString cur_string);
Modified: development/source/analyze/cAnalyzeGenotype.cc
===================================================================
--- development/source/analyze/cAnalyzeGenotype.cc 2005-11-11 03:43:36 UTC (rev 390)
+++ development/source/analyze/cAnalyzeGenotype.cc 2005-11-11 16:45:22 UTC (rev 391)
@@ -53,6 +53,7 @@
, parent_dist(0)
, ancestor_dist(0)
, parent_muts("")
+ , knockout_stats(NULL)
, landscape_stats(NULL)
{
// Make sure that the sequences jive with the inst_set
@@ -95,6 +96,7 @@
, parent_dist(0)
, ancestor_dist(0)
, parent_muts("")
+ , knockout_stats(NULL)
, landscape_stats(NULL)
{
}
@@ -129,8 +131,13 @@
, parent_dist(_gen.parent_dist)
, ancestor_dist(_gen.ancestor_dist)
, parent_muts(_gen.parent_muts)
+ , knockout_stats(NULL)
, landscape_stats(NULL)
{
+ if (_gen.knockout_stats != NULL) {
+ knockout_stats = new cAnalyzeKnockouts;
+ *knockout_stats = *(_gen.knockout_stats);
+ }
if (_gen.landscape_stats != NULL) {
landscape_stats = new cAnalyzeLandscape;
*landscape_stats = *(_gen.landscape_stats);
@@ -139,6 +146,7 @@
cAnalyzeGenotype::~cAnalyzeGenotype()
{
+ if (knockout_stats != NULL) delete knockout_stats;
if (landscape_stats != NULL) delete landscape_stats;
}
@@ -148,6 +156,150 @@
return m_world->GetConfig().TEST_CPU_TIME_MOD.Get() * genome.GetSize();
}
+void cAnalyzeGenotype::CalcKnockouts(bool check_pairs) const
+{
+ if (knockout_stats == NULL) {
+ // We've never called this before -- setup the stats.
+ knockout_stats = new cAnalyzeKnockouts;
+ }
+ else if (check_pairs == true && knockout_stats->has_pair_info == false) {
+ // We don't have the pair stats we need -- keep going.
+ knockout_stats->Reset();
+ }
+ else {
+ // We already have all the info we need -- just quit.
+ return;
+ }
+
+ // Calculate the base fitness for the genotype we're working with...
+ // (This may not have been run already, and cost negligiably more time
+ // considering the number of knockouts we need to do.
+ cAnalyzeGenotype base_genotype(genome, inst_set);
+ base_genotype.Recalculate();
+ double base_fitness = base_genotype.GetFitness();
+
+ // If the base fitness is 0, the organism is dead and has no complexity.
+ if (base_fitness == 0.0) {
+ knockout_stats->neut_count == length;
+ return;
+ }
+
+ cGenome mod_genome(genome);
+
+ // Setup a NULL instruction in a special inst set.
+ cInstSet ko_inst_set(inst_set);
+ // Locate the instruction corresponding to "NULL" in the instruction library.
+ {
+ cInstruction lib_null_inst = ko_inst_set.GetInstLib()->GetInst("NULL");
+ if (lib_null_inst == ko_inst_set.GetInstLib()->GetInstError()) {
+ cout << "<cAnalyze::AnalyzeKnockouts> got error:" << endl
+ << " instruction 'NULL' not in current hardware type" << endl;
+ exit(1);
+ }
+ // Add mapping to located instruction.
+ ko_inst_set.Add2(lib_null_inst.GetOp());
+ }
+ const cInstruction null_inst = ko_inst_set.GetInst("NULL");
+
+ // Loop through all the lines of code, testing the removal of each.
+ // -2=lethal, -1=detrimental, 0=neutral, 1=beneficial
+ tArray<int> ko_effect(length);
+ for (int line_num = 0; line_num < length; line_num++) {
+ // Save a copy of the current instruction and replace it with "NULL"
+ int cur_inst = mod_genome[line_num].GetOp();
+ mod_genome[line_num] = null_inst;
+ cAnalyzeGenotype ko_genotype(mod_genome, ko_inst_set);
+ ko_genotype.Recalculate();
+
+ double ko_fitness = ko_genotype.GetFitness();
+ if (ko_fitness == 0.0) {
+ knockout_stats->dead_count++;
+ ko_effect[line_num] = -2;
+ } else if (ko_fitness < base_fitness) {
+ knockout_stats->neg_count++;
+ ko_effect[line_num] = -1;
+ } else if (ko_fitness == base_fitness) {
+ knockout_stats->neut_count++;
+ ko_effect[line_num] = 0;
+ } else if (ko_fitness > base_fitness) {
+ knockout_stats->pos_count++;
+ ko_effect[line_num] = 1;
+ } else {
+ cerr << "INTERNAL ERROR: illegal state in CalcKnockouts()" << endl;
+ }
+
+ // Reset the mod_genome back to the original sequence.
+ mod_genome[line_num].SetOp(cur_inst);
+ }
+
+ // Only continue from here if we are looking at all pairs of knockouts
+ // as well.
+ if (check_pairs == false) return;
+
+ tArray<int> ko_pair_effect(ko_effect);
+ for (int line1 = 0; line1 < length; line1++) {
+ // If this line has already been changed, keep going...
+ if (ko_effect[line1] != ko_pair_effect[line1]) continue;
+
+ // Loop through all possibilities for the next line.
+ for (int line2 = line1+1; line2 < length; line2++) {
+ // If this line has already been changed, keep going...
+ if (ko_effect[line2] != ko_pair_effect[line2]) continue;
+
+ // If the two lines are of different types (one is information and the
+ // other is not) then we're not interested in testing this combination
+ // since any possible result is reasonable.
+ if ((ko_effect[line1] < 0 && ko_effect[line2] >= 0) ||
+ (ko_effect[line1] >= 0 && ko_effect[line2] < 0)) {
+ continue;
+ }
+
+ // Calculate the fitness for this pair of knockouts to determine if its
+ // something other than what we expected.
+
+ int cur_inst1 = mod_genome[line1].GetOp();
+ int cur_inst2 = mod_genome[line2].GetOp();
+ mod_genome[line1] = null_inst;
+ mod_genome[line2] = null_inst;
+ cAnalyzeGenotype ko_genotype(mod_genome, ko_inst_set);
+ ko_genotype.Recalculate();
+
+ double ko_fitness = ko_genotype.GetFitness();
+
+ // If the individual knockouts are both harmful, but in combination
+ // they are neutral or even beneficial, they should not count as
+ // information.
+ if (ko_fitness >= base_fitness &&
+ ko_effect[line1] < 0 && ko_effect[line2] < 0) {
+ ko_pair_effect[line1] = 0;
+ ko_pair_effect[line2] = 0;
+ }
+
+ // If the individual knockouts are both neutral (or beneficial?),
+ // but in combination they are harmful, they are likely redundant
+ // to each other. For now, count them both as information.
+ if (ko_fitness < base_fitness &&
+ ko_effect[line1] >= 0 && ko_effect[line2] >= 0) {
+ ko_pair_effect[line1] = -1;
+ ko_pair_effect[line2] = -1;
+ }
+
+ // Reset the mod_genome back to the original sequence.
+ mod_genome[line1].SetOp(cur_inst1);
+ mod_genome[line2].SetOp(cur_inst2);
+ }
+ }
+
+ for (int i = 0; i < length; i++) {
+ if (ko_pair_effect[i] == -2) knockout_stats->pair_dead_count++;
+ else if (ko_pair_effect[i] == -1) knockout_stats->pair_neg_count++;
+ else if (ko_pair_effect[i] == 0) knockout_stats->pair_neut_count++;
+ else if (ko_pair_effect[i] == 1) knockout_stats->pair_pos_count++;
+ }
+
+ knockout_stats->has_pair_info = true;
+}
+
void cAnalyzeGenotype::CalcLandscape() const
{
if (landscape_stats != NULL) return;
@@ -225,7 +377,67 @@
genome = new_genome;
}
+int cAnalyzeGenotype::GetKO_DeadCount() const
+{
+ CalcKnockouts(false); // Make sure knockouts are calculated
+ return knockout_stats->dead_count;
+}
+int cAnalyzeGenotype::GetKO_NegCount() const
+{
+ CalcKnockouts(false); // Make sure knockouts are calculated
+ return knockout_stats->neg_count;
+}
+
+int cAnalyzeGenotype::GetKO_NeutCount() const
+{
+ CalcKnockouts(false); // Make sure knockouts are calculated
+ return knockout_stats->neut_count;
+}
+
+int cAnalyzeGenotype::GetKO_PosCount() const
+{
+ CalcKnockouts(false); // Make sure knockouts are calculated
+ return knockout_stats->pos_count;
+}
+
+int cAnalyzeGenotype::GetKO_Complexity() const
+{
+ CalcKnockouts(false); // Make sure knockouts are calculated
+ return knockout_stats->dead_count + knockout_stats->neg_count;
+}
+
+int cAnalyzeGenotype::GetKOPair_DeadCount() const
+{
+ CalcKnockouts(true); // Make sure knockouts are calculated
+ return knockout_stats->pair_dead_count;
+}
+
+int cAnalyzeGenotype::GetKOPair_NegCount() const
+{
+ CalcKnockouts(true); // Make sure knockouts are calculated
+ return knockout_stats->pair_neg_count;
+}
+
+int cAnalyzeGenotype::GetKOPair_NeutCount() const
+{
+ CalcKnockouts(true); // Make sure knockouts are calculated
+ return knockout_stats->pair_neut_count;
+}
+
+int cAnalyzeGenotype::GetKOPair_PosCount() const
+{
+ CalcKnockouts(true); // Make sure knockouts are calculated
+ return knockout_stats->pair_pos_count;
+}
+
+int cAnalyzeGenotype::GetKOPair_Complexity() const
+{
+ CalcKnockouts(true); // Make sure knockouts are calculated
+ return knockout_stats->pair_dead_count + knockout_stats->pair_neg_count;
+}
+
+
double cAnalyzeGenotype::GetFracDead() const
{
CalcLandscape(); // Make sure the landscape is calculated...
Modified: development/source/analyze/cAnalyzeGenotype.h
===================================================================
--- development/source/analyze/cAnalyzeGenotype.h 2005-11-11 03:43:36 UTC (rev 390)
+++ development/source/analyze/cAnalyzeGenotype.h 2005-11-11 16:45:22 UTC (rev 391)
@@ -83,6 +83,36 @@
cString parent_muts;
// Group 4 : Landscape stats (obtained from testing all possible mutations)
+ class cAnalyzeKnockouts {
+ public:
+ int dead_count;
+ int neg_count;
+ int neut_count;
+ int pos_count;
+
+ bool has_pair_info;
+ int pair_dead_count;
+ int pair_neg_count;
+ int pair_neut_count;
+ int pair_pos_count;
+
+ void Reset() {
+ dead_count = 0;
+ neg_count = 0;
+ neut_count = 0;
+ pos_count = 0;
+
+ has_pair_info = false;
+ pair_dead_count = 0;
+ pair_neg_count = 0;
+ pair_neut_count = 0;
+ pair_pos_count = 0;
+ }
+
+ cAnalyzeKnockouts() { Reset(); }
+ };
+ mutable cAnalyzeKnockouts * knockout_stats;
+
class cAnalyzeLandscape {
public:
double frac_dead;
@@ -195,6 +225,18 @@
const cString & GetParentMuts() const { return parent_muts; }
+ // Knockout accessors
+ int GetKO_DeadCount() const;
+ int GetKO_NegCount() const;
+ int GetKO_NeutCount() const;
+ int GetKO_PosCount() const;
+ int GetKO_Complexity() const;
+ int GetKOPair_DeadCount() const;
+ int GetKOPair_NegCount() const;
+ int GetKOPair_NeutCount() const;
+ int GetKOPair_PosCount() const;
+ int GetKOPair_Complexity() const;
+
// Landscape accessors
double GetFracDead() const;
double GetFracNeg() const;
Modified: development/source/main/cLandscape.cc
===================================================================
--- development/source/main/cLandscape.cc 2005-11-11 03:43:36 UTC (rev 390)
+++ development/source/main/cLandscape.cc 2005-11-11 16:45:22 UTC (rev 391)
@@ -114,7 +114,7 @@
m_world->GetTestCPU().TestGenome(test_info, base_genome);
cPhenotype & phenotype = test_info.GetColonyOrganism()->GetPhenotype();
- base_fitness = phenotype.GetFitness();
+ base_fitness = test_info.GetColonyFitness();
base_merit = phenotype.GetMerit().GetDouble();
base_gestation = phenotype.GetGestationTime();
@@ -332,6 +332,7 @@
// Calculate the complexity...
double max_ent = log((double) inst_set.GetSize());
+ total_entropy = 0;
for (int i = 0; i < base_genome.GetSize(); i++) {
total_entropy += (log((double) site_count[i] + 1) / max_ent);
}
@@ -465,6 +466,7 @@
// Calculate the complexity...
double max_ent = log((double) inst_set.GetSize());
+ total_entropy = 0;
for (int i = 0; i < base_genome.GetSize(); i++) {
total_entropy += (log((double) site_count[i] + 1) / max_ent);
}
@@ -843,7 +845,6 @@
fp.flush();
}
-
void cLandscape::PrintBase(cString filename)
{
cTestUtil::PrintGenome(m_world, base_genome, filename);
@@ -853,4 +854,3 @@
{
cTestUtil::PrintGenome(m_world, peak_genome, filename);
}
-
Modified: development/status.xml
===================================================================
--- development/status.xml 2005-11-11 03:43:36 UTC (rev 390)
+++ development/status.xml 2005-11-11 16:45:22 UTC (rev 391)
@@ -913,27 +913,24 @@
<todo>
<actions priority="high">
- <action context="avida-ed" dev="KGN">
- Setup CMake to build application bundle.
+ <action context="admin" dev="DMB">
+ Setup consistency tests.
</action>
- <action context="avida-ed" dev="KGN">
- Implement Organism view.
+ <action context="refactor" dev="DMB">
+ New cHardware base class, separate from Hardware CPU
</action>
- <action context="avida-ed" dev="KGN">
- Move python subdir out of Boost.Python subdir.
+ <action context="refactor" dev="DMB">
+ Unique object ID factory template
</action>
- <action context="admin" dev="DMB">
- Scheduled backups of SVN repositories.
+ <action context="refactor" dev="DMB">
+ shift analyze commands into their own objects
</action>
- <action context="admin" dev="KGN">
- Fix Dashboards.
+ <action context="refactor" dev="DMB">
+ merge analyze and events
</action>
- <action context="admin" dev="KGN">
- Add python unit test to dashboards.
+ <action context="refactor" dev="DMB">
+ instruction set methods with 2's after them?
</action>
- <action context="admin" dev="KGN">
- Fix and add consistency tests.
- </action>
</actions>
<actions priority="low">
More information about the Avida-cvs
mailing list