[Avida-SVN] r2341 - in development: documentation source/actions source/main source/utils source/utils/make_actions_html

baerb at myxo.css.msu.edu baerb at myxo.css.msu.edu
Mon Feb 18 14:01:50 PST 2008


Author: baerb
Date: 2008-02-18 17:01:49 -0500 (Mon, 18 Feb 2008)
New Revision: 2341

Added:
   development/source/utils/make_actions_html/
   development/source/utils/make_actions_html/actions_source_info
   development/source/utils/make_actions_html/make_actions_html.pl
Modified:
   development/documentation/actions.html
   development/source/actions/PrintActions.cc
   development/source/main/cStats.cc
Log:

Whitespace change in PrintActions.cc.

Created a utility to generate an up-to-date actions.html.  This utility reads
the ***Actions.cc files in the source/actions to find the names of all actions
that have been defined.  It then combines this with information from
source/utils/make_actions_html/actions_source_info to create a new version of
the actions.html file.



Modified: development/documentation/actions.html
===================================================================
--- development/documentation/actions.html	2008-02-18 15:39:30 UTC (rev 2340)
+++ development/documentation/actions.html	2008-02-18 22:01:49 UTC (rev 2341)
@@ -1,4 +1,6 @@
 <html>
+<!-- This HTML was generated by the make_actions_html routine please modify --->
+<!-- the source/utils/make_actions_html/actions_source_info file            --->
 <head>
   <title>Avida : List of Actions</title>
 	<link rel="stylesheet" type="text/css" href="main.css" />
@@ -7,7 +9,7 @@
 
 <div class="revision">
 Revised 2006-09-03 DMB
-</div>
+<br>Generated Mon Feb 18 16:33:15 2008 by make_actions_html</div>
 
 <p>
 <a href="index.html">Return to the Index</a> &nbsp;|&nbsp;
@@ -51,1366 +53,2472 @@
 <p>&nbsp;</p>
 <h2>Alphabetical Listing of Available Actions</h2>
 
-<p>
 <table>
   <tr>
     <td valign="top">
-      <a href="#AnalyzeLandscape">AnalyzeLandscape</a>
-      <br /><a href="#AnalyzePopulation">AnalyzePopulation</a>
-      <br /><a href="#CompeteDemes">CompeteDemes</a>
-      <br /><a href="#CompeteOrganisms">CompeteOrganisms</a>
-      <br /><a href="#ConnectCells">ConnectCells</a>
-      <br /><a href="#CopyDeme">CopyDeme</a>
-      <br /><a href="#DeletionLandscape">DeletionLandscape</a>
-      <br /><a href="#DisconnectCells">DisconnectCells</a>
-      <br /><a href="#DumpDonorGrid">DumpDonorGrid</a>
-      <br /><a href="#DumpFitnessGrid">DumpFitnessGrid</a>
-      <br /><a href="#DumpGenotypeIDGrid">DumpGenotypeIDGrid</a>
-      <br /><a href="#DumpMemory">DumpMemory</a>
-      <br /><a href="#DumpPopulation">DumpPopulation</a>
-      <br /><a href="#DumpReceiverGrid">DumpReceiverGrid</a>
-      <br /><a href="#DumpTaskGrid">DumpTaskGrid</a>
-      <br /><a href="#Echo">Echo</a>
-      <br /><a href="#Exit">Exit</a>
-      <br /><a href="#ExitAveLineageLabelGreater">ExitAveLineageLabelGreater</a>
-      <br /><a href="#ExitAveLineageLabelLess">ExitAveLineageLabelLess</a>
-      <br /><a href="#FullLandscape">FullLandscape</a>
-      <br /><a href="#HillClimb">HillClimb</a>
-      <br /><a href="#Inject">Inject</a>
-      <br /><a href="#InjectAll">InjectAll</a>
-      <br /><a href="#InjectParasite">InjectParasite</a>
-      <br /><a href="#InjectRandom">InjectRandom</a>
-      <br /><a href="#InjectRange">InjectRange</a>
-      <br /><a href="#InjectResource">InjectResource</a>
-      <br /><a href="#InjectScaledResource">InjectScaledResource</a>
-      <br /><a href="#InjectSequence">InjectSequence</a>
-      <br /><a href="#InsertionLandscape">InsertionLandscape</a>
-      <br /><a href="#JoinGridCol">JoinGridCol</a>
-      <br /><a href="#JoinGridRow">JoinGridRow</a>
-      <br /><a href="#KillProb">KillProb</a>
-      <br /><a href="#KillRate">KillRate</a>
-      <br /><a href="#KillRectangle">KillRectangle</a>
-      <br /><a href="#LoadClone">LoadClone</a>
-      <br /><a href="#LoadPopulation">LoadPopulation</a>
-      <br /><a href="#ModMutProb">ModMutProb</a>
-    </td>
+      <a href="#AnalyzeLandscape">AnalyzeLandscape</a><br>
+      <a href="#AnalyzePopulation">AnalyzePopulation</a><br>
+      <a href="#apocalypse">apocalypse</a><br>
+      <a href="#compete_demes">compete_demes</a><br>
+      <a href="#compete_organisms">compete_organisms</a><br>
+      <a href="#CompeteDemes">CompeteDemes</a><br>
+      <a href="#CompeteOrganisms">CompeteOrganisms</a><br>
+      <a href="#connect_cells">connect_cells</a><br>
+      <a href="#ConnectCells">ConnectCells</a><br>
+      <a href="#copy_deme">copy_deme</a><br>
+      <a href="#CopyDeme">CopyDeme</a><br>
+      <a href="#DelayedDemeEvent">DelayedDemeEvent</a><br>
+      <a href="#DeletionLandscape">DeletionLandscape</a><br>
+      <a href="#detail_parasite_pop">detail_parasite_pop</a><br>
+      <a href="#detail_pop">detail_pop</a><br>
+      <a href="#detail_sex_pop">detail_sex_pop</a><br>
+      <a href="#disconnect_cells">disconnect_cells</a><br>
+      <a href="#DisconnectCells">DisconnectCells</a><br>
+      <a href="#DivideDemes">DivideDemes</a><br>
+      <a href="#dump_donor_grid">dump_donor_grid</a><br>
+      <a href="#dump_fitness_grid">dump_fitness_grid</a><br>
+      <a href="#dump_genotype_grid">dump_genotype_grid</a><br>
+      <a href="#dump_historic_pop">dump_historic_pop</a><br>
+      <a href="#dump_historic_sex_pop">dump_historic_sex_pop</a><br>
+      <a href="#dump_lineage_grid">dump_lineage_grid</a><br>
+      <a href="#dump_memory">dump_memory</a><br>
+      <a href="#dump_phenotype_grid">dump_phenotype_grid</a><br>
+      <a href="#dump_pop">dump_pop</a><br>
+      <a href="#dump_receiver_grid">dump_receiver_grid</a><br>
+      <a href="#dump_task_grid">dump_task_grid</a><br>
+      <a href="#DumpCellDataGrid">DumpCellDataGrid</a><br>
+      <a href="#DumpDonorGrid">DumpDonorGrid</a><br>
+      <a href="#DumpEnergyGrid">DumpEnergyGrid</a><br>
+      <a href="#DumpExecutionRatioGrid">DumpExecutionRatioGrid</a><br>
+      <a href="#DumpFitnessGrid">DumpFitnessGrid</a><br>
+      <a href="#DumpGenotypeIDGrid">DumpGenotypeIDGrid</a><br>
+      <a href="#DumpLandscape">DumpLandscape</a><br>
+      <a href="#DumpLineageGrid">DumpLineageGrid</a><br>
+      <a href="#DumpMemory">DumpMemory</a><br>
+      <a href="#DumpPhenotypeIDGrid">DumpPhenotypeIDGrid</a><br>
+      <a href="#DumpPopulation">DumpPopulation</a><br>
+      <a href="#DumpReceiverGrid">DumpReceiverGrid</a><br>
+      <a href="#DumpSleepGrid">DumpSleepGrid</a><br>
+      <a href="#DumpTaskGrid">DumpTaskGrid</a><br>
+      <a href="#Echo">Echo</a><br>
+      <a href="#echo">echo</a><br>
+      <a href="#exit">exit</a><br>
+      <a href="#Exit">Exit</a><br>
+      <a href="#exit_if_ave_lineage_label_larger">exit_if_ave_lineage_label_larger</a><br>
+      <a href="#exit_if_ave_lineage_label_smaller">exit_if_ave_lineage_label_smaller</a><br>
+      <a href="#ExitAveLineageLabelGreater">ExitAveLineageLabelGreater</a><br>
+      <a href="#ExitAveLineageLabelLess">ExitAveLineageLabelLess</a><br>
+      <a href="#FullLandscape">FullLandscape</a><br>
+      <a href="#genetic_distance_pop_dump">genetic_distance_pop_dump</a><br>
+      <a href="#HillClimb">HillClimb</a><br>
+      <a href="#inject">inject</a><br>
+      <a href="#Inject">Inject</a><br>
+      <a href="#inject_all">inject_all</a><br>
+      <a href="#inject_all_random_repro">inject_all_random_repro</a><br>
+      <a href="#inject_random">inject_random</a><br>
+      <a href="#inject_range">inject_range</a><br>
+      <a href="#inject_resource">inject_resource</a><br>
+      <a href="#inject_scaled_resource">inject_scaled_resource</a><br>
+      <a href="#inject_sequence">inject_sequence</a><br>
+      <a href="#InjectAll">InjectAll</a><br>
+      <a href="#InjectDemes">InjectDemes</a><br>
+      <a href="#InjectParasite">InjectParasite</a><br>
+      <a href="#InjectParasitePair">InjectParasitePair</a><br>
+      <a href="#InjectRandom">InjectRandom</a><br>
+      <a href="#InjectRange">InjectRange</a><br>
+      <a href="#InjectResource">InjectResource</a><br>
+      <a href="#InjectScaledResource">InjectScaledResource</a><br>
+      <a href="#InjectSequence">InjectSequence</a><br>
+      <a href="#InsertionLandscape">InsertionLandscape</a><br>
+      <a href="#join_grid_col">join_grid_col</a><br>
+      <a href="#join_grid_row">join_grid_row</a><br>
+      <a href="#JoinGridCol">JoinGridCol</a><br>
+      <a href="#JoinGridRow">JoinGridRow</a><br>
+      <a href="#kill_rectangle">kill_rectangle</a><br>
+      <a href="#KillProb">KillProb</a><br>
     <td valign="top">
-      <a href="#NewTrial">NewTrial</a>
-      <br /><a href="#OutflowScaledResource">OutflowScaledResource</a>
-      <br /><a href="#PairTestLandscape">PairTestLandscape</a>
-      <br /><a href="#PrecalcLandscape">PrecalcLandscape</a>
-      <br /><a href="#PredictNuLandscape">PredictNuLandscape</a>
-      <br /><a href="#PredictWLandscape">PredictWLandscape</a>
-      <br /><a href="#PrintAverageData">PrintAverageData</a>
-      <br /><a href="#PrintCCladeCounts">PrintCCladeCounts</a>
-      <br /><a href="#PrintCCladeFitnessHistogram">PrintCCladeFitnessHistogram</a>
-      <br /><a href="#PrintCCladeRelativeFitnessHistogram">PrintCCladeRelativeFitnessHistogram</a>
-      <br /><a href="#PrintCompetitionData">PrintCompetitionData</a>
-      <br /><a href="#PrintCountData">PrintCountData</a>
-      <br /><a href="#PrintData">PrintData</a>
-      <br /><a href="#PrintDebug">PrintDebug</a>
-      <br /><a href="#PrintDemeStats">PrintDemeStats</a>
-      <br /><a href="#PrintDepthHistogram">PrintDepthHistogram</a>
-      <br /><a href="#PrintDetailedFitnessData">PrintDetailedFitnessData</a>
-      <br /><a href="#PrintDivideMutData">PrintDivideMutData</a>
-      <br /><a href="#PrintDominantData">PrintDominantData</a>
-      <br /><a href="#PrintDominantGenotype">PrintDominantGenotype</a>
-      <br /><a href="#PrintDominantParaData">PrintDominantParaData</a>
-      <br /><a href="#PrintDominantParasiteGenotype">PrintDominantParasiteGenotype</a>
-      <br /><a href="#PrintErrorData">PrintErrorData</a>
-      <br /><a href="#PrintGeneticDistanceData">PrintGeneticDistanceData</a>
-      <br /><a href="#PrintGenomicSiteEntropy">PrintGenomicSiteEntropy</a>
-      <br /><a href="#PrintGenotypeAbundanceHistogram">PrintGenotypeAbundanceHistogram</a>
-      <br /><a href="#PrintGenotypeMap">PrintGenotypeMap</a>
-      <br /><a href="#PrintGenotypes">PrintGenotypes</a>
-      <br /><a href="#PrintInstructionAbundanceHistogram">PrintInstructionAbundanceHistogram</a>
-      <br /><a href="#PrintInstructionData">PrintInstructionData</a>
-      <br /><a href="#PrintLineageCounts">PrintLineageCounts</a>
-      <br /><a href="#PrintLineageTotals">PrintLineageTotals</a>
-      <br /><a href="#PrintLogFitnessHistogram">PrintLogFitnessHistogram</a>
-      <br /><a href="#PrintMutationRateData">PrintMutationRateData</a>
-      <br /><a href="#PrintPhenotypeData">PrintPhenotypeData</a>
-      <br /><a href="#PrintPhenotypeStatus">PrintPhenotypeStatus</a>
-      <br /><a href="#PrintPhenotypicPlasticity">PrintPhenotypicPlasticity</a>
-      <br /><a href="#PrintPopulationDistanceData">PrintPopulationDistanceData</a>
-    </td>
+      <a href="#KillRate">KillRate</a><br>
+      <a href="#KillRectangle">KillRectangle</a><br>
+      <a href="#load_clone">load_clone</a><br>
+      <a href="#load_dump_file">load_dump_file</a><br>
+      <a href="#LoadClone">LoadClone</a><br>
+      <a href="#LoadPopulation">LoadPopulation</a><br>
+      <a href="#ModMutProb">ModMutProb</a><br>
+      <a href="#MutationalNeighborhood">MutationalNeighborhood</a><br>
+      <a href="#new_trial">new_trial</a><br>
+      <a href="#NewTrial">NewTrial</a><br>
+      <a href="#outflow_scaled_resource">outflow_scaled_resource</a><br>
+      <a href="#OutflowScaledResource">OutflowScaledResource</a><br>
+      <a href="#PairTestLandscape">PairTestLandscape</a><br>
+      <a href="#PrecalcLandscape">PrecalcLandscape</a><br>
+      <a href="#PredictNuLandscape">PredictNuLandscape</a><br>
+      <a href="#PredictWLandscape">PredictWLandscape</a><br>
+      <a href="#print_average_data">print_average_data</a><br>
+      <a href="#print_count_data">print_count_data</a><br>
+      <a href="#print_data">print_data</a><br>
+      <a href="#print_deme_stats">print_deme_stats</a><br>
+      <a href="#print_depth_histogram">print_depth_histogram</a><br>
+      <a href="#print_detailed_fitness_data">print_detailed_fitness_data</a><br>
+      <a href="#print_divide_mut_data">print_divide_mut_data</a><br>
+      <a href="#print_dom">print_dom</a><br>
+      <a href="#print_dom_parasite">print_dom_parasite</a><br>
+      <a href="#print_dominant_data">print_dominant_data</a><br>
+      <a href="#print_donation_stats">print_donation_stats</a><br>
+      <a href="#print_error_data">print_error_data</a><br>
+      <a href="#print_genetic_distance_data">print_genetic_distance_data</a><br>
+      <a href="#print_genotype_abundance_histogram">print_genotype_abundance_histogram</a><br>
+      <a href="#print_genotype_map">print_genotype_map</a><br>
+      <a href="#print_genotypes">print_genotypes</a><br>
+      <a href="#print_instruction_abundance_histogram">print_instruction_abundance_histogram</a><br>
+      <a href="#print_instruction_data">print_instruction_data</a><br>
+      <a href="#print_lineage_counts">print_lineage_counts</a><br>
+      <a href="#print_lineage_totals">print_lineage_totals</a><br>
+      <a href="#print_market_data">print_market_data</a><br>
+      <a href="#print_mutation_rate_data">print_mutation_rate_data</a><br>
+      <a href="#print_number_phenotypes">print_number_phenotypes</a><br>
+      <a href="#print_phenotype_status">print_phenotype_status</a><br>
+      <a href="#print_resource_data">print_resource_data</a><br>
+      <a href="#print_species_abundance_histogram">print_species_abundance_histogram</a><br>
+      <a href="#print_stats_data">print_stats_data</a><br>
+      <a href="#print_tasks_data">print_tasks_data</a><br>
+      <a href="#print_tasks_exe_data">print_tasks_exe_data</a><br>
+      <a href="#print_tasks_qual_data">print_tasks_qual_data</a><br>
+      <a href="#print_time_data">print_time_data</a><br>
+      <a href="#print_totals_data">print_totals_data</a><br>
+      <a href="#print_tree_depths">print_tree_depths</a><br>
+      <a href="#print_variance_data">print_variance_data</a><br>
+      <a href="#print_viable_tasks_data">print_viable_tasks_data</a><br>
+      <a href="#PrintAverageData">PrintAverageData</a><br>
+      <a href="#PrintCCladeCounts">PrintCCladeCounts</a><br>
+      <a href="#PrintCCladeFitnessHistogram">PrintCCladeFitnessHistogram</a><br>
+      <a href="#PrintCCladeRelativeFitnessHistogram">PrintCCladeRelativeFitnessHistogram</a><br>
+      <a href="#PrintCompetitionData">PrintCompetitionData</a><br>
+      <a href="#PrintCountData">PrintCountData</a><br>
+      <a href="#PrintData">PrintData</a><br>
+      <a href="#PrintDebug">PrintDebug</a><br>
+      <a href="#PrintDemeAllStats">PrintDemeAllStats</a><br>
+      <a href="#PrintDemeAverageData">PrintDemeAverageData</a><br>
+      <a href="#PrintDemeDonorStats">PrintDemeDonorStats</a><br>
+      <a href="#PrintDemeResourceStats">PrintDemeResourceStats</a><br>
+      <a href="#PrintDemeSpacialEnergyStats">PrintDemeSpacialEnergyStats</a><br>
+      <a href="#PrintDemeSpacialSleepStats">PrintDemeSpacialSleepStats</a><br>
+      <a href="#PrintDemeStats">PrintDemeStats</a><br>
+      <a href="#PrintDepthHistogram">PrintDepthHistogram</a><br>
+      <a href="#PrintDetailedFitnessData">PrintDetailedFitnessData</a><br>
+      <a href="#PrintDivideMutData">PrintDivideMutData</a><br>
+      <a href="#PrintDominantData">PrintDominantData</a><br>
+      <a href="#PrintDominantGenotype">PrintDominantGenotype</a><br>
+      <a href="#PrintDominantParasiteGenotype">PrintDominantParasiteGenotype</a><br>
+      <a href="#PrintErrorData">PrintErrorData</a><br>
+      <a href="#PrintGeneticDistanceData">PrintGeneticDistanceData</a><br>
+      <a href="#PrintGenomicSiteEntropy">PrintGenomicSiteEntropy</a><br>
+      <a href="#PrintGenotypeAbundanceHistogram">PrintGenotypeAbundanceHistogram</a><br>
+      <a href="#PrintGenotypeMap">PrintGenotypeMap</a><br>
+      <a href="#PrintGenotypes">PrintGenotypes</a><br>
+      <a href="#PrintInstructionAbundanceHistogram">PrintInstructionAbundanceHistogram</a><br>
+      <a href="#PrintInstructionData">PrintInstructionData</a><br>
     <td valign="top">
-      <a href="#PrintRelativeFitnessHistogram">PrintRelativeFitnessHistogram</a>
-      <br /><a href="#PrintResourceData">PrintResourceData</a>
-      <br /><a href="#PrintSpeciesAbundanceData">PrintSpeciesAbundanceData</a>
-      <br /><a href="#PrintStatsData">PrintStatsData</a>
-      <br /><a href="#PrintTasksSnapshot">PrintTasksSnapshot</a>
-      <br /><a href="#PrintTasksExeData">PrintTasksExeData</a>
-      <br /><a href="#PrintTasksQualData">PrintTasksQualData</a>
-      <br /><a href="#PrintTimeData">PrintTimeData</a>
-      <br /><a href="#PrintTotalsData">PrintTotalsData</a>
-      <br /><a href="#PrintTreeDepths">PrintTreeDepths</a>
-      <br /><a href="#PrintVarianceData">PrintVarianceData</a>
-      <br /><a href="#PrintViableTasksData">PrintViableTasksData</a>
-      <br /><a href="#RandomLandscape">RandomLandscape</a>
-      <br /><a href="#ResetDemes">ResetDemes</a>
-      <br /><a href="#SampleLandscape">SampleLandscape</a>
-      <br /><a href="#SaveClone">SaveClone</a>
-      <br /><a href="#SaveHistoricPopulation">SaveHistoricPopulation</a>
-      <br /><a href="#SaveHistoricSexPopulation">SaveHistoricSexPopulation</a>
-      <br /><a href="#SaveParasitePopulation">SaveParasitePopulation</a>
-      <br /><a href="#SavePopulation">SavePopulation</a>
-      <br /><a href="#SaveSexPopulation">SaveSexPopulation</a>
-      <br /><a href="#SerialTransfer">SerialTransfer</a>
-      <br /><a href="#SetEnvironmentInputs">SetEnvironmentInputs</a>
-      <br /><a href="#SetMutProb">SetMutProb</a>
-      <br /><a href="#SetReactionInst">SetReactionInst</a>
-      <br /><a href="#SetReactionMinTaskCount">SetReactionMinTaskCount</a>
-      <br /><a href="#SetReactionMaxTaskCount">SetReactionMaxTaskCount</a>
-      <br /><a href="#SetReactionValue">SetReactionValue</a>
-      <br /><a href="#SetReactionValueMult">SetReactionValueMult</a>
-      <br /><a href="#SetResource">SetResource</a>
-      <br /><a href="#SetResourceInflow">SetResourceInflow</a>
-      <br /><a href="#SetResourceOutflow">SetResourceOutflow</a>
-      <br /><a href="#SetVerbose">SetVerbose</a>
-      <br /><a href="#SeverGridCol">SeverGridCol</a>
-      <br /><a href="#SeverGridRow">SeverGridRow</a>
-      <br /><a href="#TestDominant">TestDominant</a>
-      <br /><a href="#ZeroMuts">ZeroMuts</a>
-    </td>
+      <a href="#PrintLineageCounts">PrintLineageCounts</a><br>
+      <a href="#PrintLineageTotals">PrintLineageTotals</a><br>
+      <a href="#PrintLogFitnessHistogram">PrintLogFitnessHistogram</a><br>
+      <a href="#PrintMarketData">PrintMarketData</a><br>
+      <a href="#PrintMutationRateData">PrintMutationRateData</a><br>
+      <a href="#PrintParasiteData">PrintParasiteData</a><br>
+      <a href="#PrintPhenotypeData">PrintPhenotypeData</a><br>
+      <a href="#PrintPhenotypeStatus">PrintPhenotypeStatus</a><br>
+      <a href="#PrintPhenotypicPlasticity">PrintPhenotypicPlasticity</a><br>
+      <a href="#PrintPopulationDistanceData">PrintPopulationDistanceData</a><br>
+      <a href="#PrintReactionData">PrintReactionData</a><br>
+      <a href="#PrintReactionRewardData">PrintReactionRewardData</a><br>
+      <a href="#PrintRelativeFitnessHistogram">PrintRelativeFitnessHistogram</a><br>
+      <a href="#PrintResourceData">PrintResourceData</a><br>
+      <a href="#PrintSenseData">PrintSenseData</a><br>
+      <a href="#PrintSenseExeData">PrintSenseExeData</a><br>
+      <a href="#PrintSleepData">PrintSleepData</a><br>
+      <a href="#PrintSpeciesAbundanceHistogram">PrintSpeciesAbundanceHistogram</a><br>
+      <a href="#PrintStatsData">PrintStatsData</a><br>
+      <a href="#PrintTasksData">PrintTasksData</a><br>
+      <a href="#PrintTasksExeData">PrintTasksExeData</a><br>
+      <a href="#PrintTaskSnapshot">PrintTaskSnapshot</a><br>
+      <a href="#PrintTasksQualData">PrintTasksQualData</a><br>
+      <a href="#PrintTimeData">PrintTimeData</a><br>
+      <a href="#PrintTotalsData">PrintTotalsData</a><br>
+      <a href="#PrintTreeDepths">PrintTreeDepths</a><br>
+      <a href="#PrintVarianceData">PrintVarianceData</a><br>
+      <a href="#PrintViableTasksData">PrintViableTasksData</a><br>
+      <a href="#RandomLandscape">RandomLandscape</a><br>
+      <a href="#rate_kill">rate_kill</a><br>
+      <a href="#replicate_demes">replicate_demes</a><br>
+      <a href="#ReplicateDemes">ReplicateDemes</a><br>
+      <a href="#reset_demes">reset_demes</a><br>
+      <a href="#ResetDemes">ResetDemes</a><br>
+      <a href="#SampleLandscape">SampleLandscape</a><br>
+      <a href="#save_clone">save_clone</a><br>
+      <a href="#SaveClone">SaveClone</a><br>
+      <a href="#SaveHistoricPopulation">SaveHistoricPopulation</a><br>
+      <a href="#SaveHistoricSexPopulation">SaveHistoricSexPopulation</a><br>
+      <a href="#SaveParasitePopulation">SaveParasitePopulation</a><br>
+      <a href="#SavePopulation">SavePopulation</a><br>
+      <a href="#SaveSexPopulation">SaveSexPopulation</a><br>
+      <a href="#serial_transfer">serial_transfer</a><br>
+      <a href="#SerialTransfer">SerialTransfer</a><br>
+      <a href="#set_reaction_inst">set_reaction_inst</a><br>
+      <a href="#set_reaction_value">set_reaction_value</a><br>
+      <a href="#set_reaction_value_mult">set_reaction_value_mult</a><br>
+      <a href="#set_resource">set_resource</a><br>
+      <a href="#SetCellResource">SetCellResource</a><br>
+      <a href="#SetEnvironmentInputMask">SetEnvironmentInputMask</a><br>
+      <a href="#SetEnvironmentInputs">SetEnvironmentInputs</a><br>
+      <a href="#SetMutProb">SetMutProb</a><br>
+      <a href="#SetNumInstBefore0Energy">SetNumInstBefore0Energy</a><br>
+      <a href="#SetOptimizeMinMax">SetOptimizeMinMax</a><br>
+      <a href="#SetPeriodicResource">SetPeriodicResource</a><br>
+      <a href="#SetReactionInst">SetReactionInst</a><br>
+      <a href="#SetReactionMaxTaskCount">SetReactionMaxTaskCount</a><br>
+      <a href="#SetReactionMinTaskCount">SetReactionMinTaskCount</a><br>
+      <a href="#SetReactionValue">SetReactionValue</a><br>
+      <a href="#SetReactionValueMult">SetReactionValueMult</a><br>
+      <a href="#SetResource">SetResource</a><br>
+      <a href="#SetResourceInflow">SetResourceInflow</a><br>
+      <a href="#SetResourceOutflow">SetResourceOutflow</a><br>
+      <a href="#SetTaskArgDouble">SetTaskArgDouble</a><br>
+      <a href="#SetTaskArgInt">SetTaskArgInt</a><br>
+      <a href="#SetTaskArgString">SetTaskArgString</a><br>
+      <a href="#SetVerbose">SetVerbose</a><br>
+      <a href="#sever_grid_col">sever_grid_col</a><br>
+      <a href="#sever_grid_row">sever_grid_row</a><br>
+      <a href="#SeverGridCol">SeverGridCol</a><br>
+      <a href="#SeverGridRow">SeverGridRow</a><br>
+      <a href="#swap_cells">swap_cells</a><br>
+      <a href="#SwapCells">SwapCells</a><br>
+      <a href="#task_snapshot">task_snapshot</a><br>
+      <a href="#test_dom">test_dom</a><br>
+      <a href="#TestDominant">TestDominant</a><br>
+      <a href="#ToggleFitnessValley">ToggleFitnessValley</a><br>
+      <a href="#ToggleRewardInstruction">ToggleRewardInstruction</a><br>
+      <a href="#VERBOSE">VERBOSE</a><br>
+      <a href="#zero_muts">zero_muts</a><br>
+      <a href="#ZeroMuts">ZeroMuts</a><br>
   </tr>
 </table>
-
-
 <p>&nbsp;</p>
-<h2><a name="PrintActions">Print Actions</a></h2>
+<h2><a name="DriverActions">Driver Actions</a></h2>
 
 <p>
-Output events are the primary way of saving data from an Avida experiments.
-The main two types are <em>continuous output</em>, which append to a single file 
-every time the event is trigged, and <em>singular output</em>, which produce
-a single, complete file for each trigger.
+These actions control the driver object responsible for executing the current run.
 </p>
-
-<ul>
-<!-------- Stats Out Files -------->
-<li>
-  <strong><a name="PrintAverageData">PrintAverageData</a></strong>
-  [<span class="cmdarg">string filename='average.dat'</span>]
+<UL>
+<li><p>
+  <strong><a name="exit">exit</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="Exit">Exit</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  Print all of the population averages the specified file.
+    Unconditionally terminate the current run.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintCCladeCounts">PrintCCladeCounts</a></strong>
-  [<span class="cmdarg">string filename="cclade_count.dat"</span>]
+<li><p>
+  <strong><a name="exit_if_ave_lineage_label_larger">exit_if_ave_lineage_label_larger</a></strong>
+  <i>&lt;double threshold&gt;</i>
+  </p>
   <p>
-    Print a count of the number of oraganisms belonging to a each coalescence clade currently in the population.
-    <br />This action will only work in run mode.
-    <br />This action will require TRACK_CCLADE to be enabled.
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="PrintCCladeFitnessHistogram">PrintCCladeFitnessHistogram</a></strong>
-  [<span class="cmdarg">string filename="cclade_fitness_hist.dat"</span>]
-  [<span class="cmdarg">string mode="CURRENT"</span>] 
-  [<span class="cmdarg">double lower_bound=-3.0</span>] 
-  [<span class="cmdarg">double step=0.5</span>] 
-  [<span class="cmdarg">double upper_bound=12.0</span>]
+<li><p>
+  <strong><a name="exit_if_ave_lineage_label_smaller">exit_if_ave_lineage_label_smaller</a></strong>
+  <i>&lt;double threshold&gt;</i>
+  </p>
   <p>
-    Print a histogram of fitnesses for each coalescence clade in the population.
-    <br />This action will only work in run mode.
-    <br />This action will rerequire TRACK_CCLADE to be enabled.
-    <br/>
-    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
-      <br />
-    <kbd>lower_bound, step, upper_bound</kbd> are log10 values for the individual histogram bins.</kbd>
+  
   </p>
 </li>
+<li><p>
+  <strong><a name="ExitAveLineageLabelGreater">ExitAveLineageLabelGreater</a></strong>
+  <i>&lt;double threshold&gt;</i>
+  </p>
+  <p>
+     Halts the run if the current average lineage label is larger
+   than <span class="cmdarg">threshold</span>.
 
-<li>
-  <strong><a name="PrintCCladeRelativeFitnessHistogram">PrintCCladeRelativeFitnessHistogram</a></strong>
-  [<span class="cmdarg">string filename="cclade_rel_fitness_histogram.dat"</span>]
-  [<span class="cmdarg">string mode="CURRENT"</span>] 
-  [<span class="cmdarg">double lower_bound=0.0</span>] 
-  [<span class="cmdarg">double step=0.1</span>] 
-  [<span class="cmdarg">double upper_bound=2.0</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="ExitAveLineageLabelLess">ExitAveLineageLabelLess</a></strong>
+  <i>&lt;double threshold&gt;</i>
+  </p>
   <p>
-    Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.
-    <br />This action will only work in run mode.
-    <br />This action will rerequire TRACK_CCLADE to be enabled.
-    <br/>
-    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
-      <br />
-    <kbd>lower_bound, step, upper_bound</kbd> are values for the individual histogram bins.</kbd>
+     Halts the run if the current average lineage label is smaller
+   than <span class="cmdarg">threshold</span>.
+
   </p>
 </li>
+</UL>
+<p>&nbsp;</p>
+<h2><a name="EnvironmentActions">Environment Actions</a></h2>
 
-<li>
-  <strong><a name="PrintCompetitionData">PrintCompetitionData</a></strong>
-  [<span class="cmdarg">string filename='competition.dat'</span>]
+<p>
+Events that allow user to change environment properties, such as resources
+and reaction parameters.
+</p>
+<UL>
+<li><p>
+  <strong><a name="DelayedDemeEvent">DelayedDemeEvent</a></strong>
+  <i>&lt;int x1&gt; &lt;int y1&gt; &lt;int x2&gt; &lt;int y2&gt; &lt;int delay&gt; &lt;int duraion&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="inject_resource">inject_resource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
   <p>
-  Print out CompeteOrganism statistics. Make the first call after the first set of trials has been completed to get a complete header.
+  
   </p>
 </li>
-
-
-<li>
-  <strong><a name="PrintErrorData">PrintErrorData</a></strong>
-  [<span class="cmdarg">string filename='error.dat'</span>]
+<li><p>
+  <strong><a name="inject_scaled_resource">inject_scaled_resource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="InjectResource">InjectResource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
   <p>
-  Print all of the standard errors of the average population statistics.
+    Inject (add) a specified amount of a specified resource. 
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintVarianceData">PrintVarianceData</a></strong>
-  [<span class="cmdarg">string filename='variance.dat'</span>]
+<li><p>
+  <strong><a name="InjectScaledResource">InjectScaledResource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="outflow_scaled_resource">outflow_scaled_resource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_percent&gt;</i>
+  </p>
   <p>
-  Print all of the variances of the average population statistics.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDominantData">PrintDominantData</a></strong>
-  [<span class="cmdarg">string filename='dominant.dat'</span>]
+<li><p>
+  <strong><a name="OutflowScaledResource">OutflowScaledResource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_percent&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="set_reaction_inst">set_reaction_inst</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;string inst&gt;</i>
+  </p>
   <p>
-  Print all of the statistics relating to the dominant genotype.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintStatsData">PrintStatsData</a></strong>
-  [<span class="cmdarg">string filename='stats.dat'</span>]
+<li><p>
+  <strong><a name="set_reaction_value">set_reaction_value</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;double value&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="set_reaction_value_mult">set_reaction_value_mult</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;double value&gt;</i>
+  </p>
   <p>
-  Print all of the miscellanous population statistics.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintCountData">PrintCountData</a></strong>
-  [<span class="cmdarg">string filename='count.dat'</span>]
+<li><p>
+  <strong><a name="set_resource">set_resource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetCellResource">SetCellResource</a></strong>
+  <i>&lt;int cell_id&gt; &lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
   <p>
-  Print all of the statistics the keep track of counts (such as the number of organisms
-  in the population or the number of instructions executed).
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintTotalsData">PrintTotalsData</a></strong>
-  [<span class="cmdarg">string filename='totals.dat'</span>]
+<li><p>
+  <strong><a name="SetEnvironmentInputMask">SetEnvironmentInputMask</a></strong>
+  <i>&lt;int mask&gt; &lt;int value&gt; </i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetEnvironmentInputs">SetEnvironmentInputs</a></strong>
+  <i>&lt;int input_1&gt; &lt;int input_2&gt; &lt;int input_3&gt; </i>
+  </p>
   <p>
-  Print various totals for the entire length of the run (for example, the total number of
-  organisms ever).
+    Set the inputs that all organisms get from the environment when doing IO to these specific values. There must 
+  be exactly three inputs, and they must have the usual values for the top 8 "key" bits, i.e. they must be of the form
+  0x0F?????? 0x33?????? 0x55?????? where ? can be replaced with any hexadecimal digit.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintTasksData">PrintTasksData</a></strong>
-  [<span class="cmdarg">string filename='tasks.dat'</span>]
+<li><p>
+  <strong><a name="SetNumInstBefore0Energy">SetNumInstBefore0Energy</a></strong>
+  <i>&lt;int new_value&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetOptimizeMinMax">SetOptimizeMinMax</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  Print the number of organisms that are able to perform each task.  This uses the
-  environment configuration to determine what tasks are in use.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintTasksExeData">PrintTasksExeData</a></strong>
-  [<span class="cmdarg">string filename='tasks_exe.dat'</span>]
+<li><p>
+  <strong><a name="SetPeriodicResource">SetPeriodicResource</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;string amplitude&gt; &lt;string pi/frequence&gt; &lt;phaseShift*pi&gt; &lt;string initial_Y&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetReactionInst">SetReactionInst</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;string inst&gt;</i>
+  </p>
   <p>
-  Print number of times the particular task has been executed this update.
+    Set the instruction triggered by this reaction.
+  <span class="cmdarg">reaction_name</span> must already
+  exist in the environment file.
+  <span class="cmdarg">inst</span> must be in the instruction set. 
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintTasksQualData">PrintTasksQualData</a></strong>
-  [<span class="cmdarg">string filename='tasks_quality.dat'</span>]
-  
+<li><p>
+  <strong><a name="SetReactionMaxTaskCount">SetReactionMaxTaskCount</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;int max_count&gt;</i>
+  </p>
   <p>
-  Print the total quality of each task.  By default a successful task is valued
-  as 1.0.  Some tasks, however, can grant partial values and/or special bonuses
-  via the quality value.
+    Set the max task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintResourceData">PrintResourceData</a></strong>
-  [<span class="cmdarg">string filename='resource.dat'</span>]
-  
+<li><p>
+  <strong><a name="SetReactionMinTaskCount">SetReactionMinTaskCount</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;int min_count&gt;</i>
+  </p>
   <p>
-  Print the current counts of each resource available to the population.  This uses
-  the environment configuration to determine what resources are in use.  Also creates
-  seperate files <kbd>resource_<em>resource_name</em>.m</kbd> (in a format that is
-  designed to be read into Matlab) for each spatial resource.
+    Set the min task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintTimeData">PrintTimeData</a></strong>
-  [<span class="cmdarg">string filename='time.dat'</span>]
-  
+<li><p>
+  <strong><a name="SetReactionValue">SetReactionValue</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;double value&gt;</i>
+  </p>
   <p>
-  Print all of the timing related statistics.
+    Set the reaction value to a specific level.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+  <span class="cmdarg">value</span> can be negative. 
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintMutationRateData">PrintMutationRateData</a></strong>
-  [<span class="cmdarg">string filename='mutation_rates.dat'</span>]
-  
+<li><p>
+  <strong><a name="SetReactionValueMult">SetReactionValueMult</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;double value&gt;</i>
+  </p>
   <p>
-  Output (regular and log) statistics about individual copy mutation rates
-  (aver, stdev, skew, cur). Useful only when mutation rate is set per organism.
+    Multiply the reaction value by the <span class="cmdarg">value</span>.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+  <span class="cmdarg">value</span> can be negative. 
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintDivideMutData">PrintDivideMutData</a></strong>
-  [<span class="cmdarg">string filename='divide_mut.dat'</span>]
+<li><p>
+  <strong><a name="SetResource">SetResource</a></strong>
+  <i>&lt;string res_name&gt; &lt;double res_count&gt;</i>
+  </p>
+  <p>
+    Set the resource amount to a specific level.
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetResourceInflow">SetResourceInflow</a></strong>
+  <i>&lt;string resource_name&gt; &lt;int inflow&gt;</i>
+  </p>
+  <p>
+    Set the resource inflow to a specific level.
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetResourceOutflow">SetResourceOutflow</a></strong>
+  <i>&lt;string resource_name&gt; &lt;int outflow&gt;</i>
+  </p>
+  <p>
+    Set the resource outflow to a specific level.
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetTaskArgDouble">SetTaskArgDouble</a></strong>
+  <i>&lt;int task&gt; &lt;int arg&gt; &lt;double value&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetTaskArgInt">SetTaskArgInt</a></strong>
+  <i>&lt;int task&gt; &lt;int arg&gt; &lt;int value&gt;</i>
+  </p>
   <p>
-  Output (regular and log) statistics about individual, per site, rates divide mutation
-  rates (aver, stdev, skew, cur) to divide_mut.dat. Use with multiple divide instuction set.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDominantParaData">PrintDominantParaData</a></strong>
-  [<span class="cmdarg">string filename='parasite.dat'</span>]
+<li><p>
+  <strong><a name="SetTaskArgString">SetTaskArgString</a></strong>
+  <i>&lt;int task&gt; &lt;int arg&gt; &lt;string value&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+</UL>
+<p>&nbsp;</p>
+<h2><a name="LandscapeActions">Landscape Analysis Actions</a></h2>
+
+<p>
+Landscape analysis actions perform various types mutation studies to
+calculate properties of the fitness landscape for a particular genome.
+When scheduled as an event during a run, these actions will typically
+perform analysis on the dominant genotype.  In analyze mode, analysis
+is performed on the entire currently selected batch.
+</p>
+<p>
+These actions are often very computationally intensive, thus will
+take a long time to compute.  In order to take advantage of increasingly
+available multi-processor/multi-core systems, a number of these actions
+have been enhanced to make use of multiple threads to parallize work.
+Set the configuration setting <code>MT_CONCURRENCY</code> to the number
+of logical processors available to make use of all processor resources
+for these compuations.
+</p>
+<UL>
+<li><p>
+  <strong><a name="AnalyzeLandscape">AnalyzeLandscape</a></strong>
+  <i>[filename="land-analyze.dat"] [int trials=1000] [int min_found=0] [int max_trials=0] [int max_dist=10]</i>
+  </p>
   <p>
-  Print various quantites related to the dominant parasite.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintInstructionData">PrintInstructionData</a></strong>
-  [<span class="cmdarg">string filename='instruction.dat'</span>]
+<li><p>
+  <strong><a name="AnalyzePopulation">AnalyzePopulation</a></strong>
+  <i>[double sample_prob=1] [int landscape=0] [int save_genotype=0] [string filename=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DeletionLandscape">DeletionLandscape</a></strong>
+  <i>[string filename="land-del.dat"] [int distance=1] [string sitecount_file=""]</i>
+  </p>
   <p>
-  Print the by-organisms counts of what instructions they _successfully_ executed
-  beteween birth and divide. Prior to their first divide, organisms values for their parents.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintGenotypeMap">PrintGenotypeMap</a></strong>
-  [<span class="cmdarg">string filename='genotype_map.m'</span>]
+<li><p>
+  <strong><a name="DumpLandscape">DumpLandscape</a></strong>
+  <i>[string filename="land-dump.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="FullLandscape">FullLandscape</a></strong>
+  <i>[string filename="land-full.dat"] [int distance=1] [string entropy_file=""] [string sitecount_file=""]</i>
+  </p>
   <p>
-  This event is used to output a map of the genotype IDs for the
-  population grid to a file that is suitable to be read into Matlab.
+    Do a landscape analysis of the dominant genotype or current batch of genotypes,
+  depending on the current mode.  The resulting output is a collection of 
+  statistics obtained from examining all possible mutations at the distance
+  specified.  The default distance is one.
+
   </p>
 </li>
+<li><p>
+  <strong><a name="HillClimb">HillClimb</a></strong>
+  <i>[string filename="hillclimb.dat"]</i>
+  </p>
+  <p>
+    Does a hill climb with the dominant genotype.
 
-<!-------- Population Out Files -------->
-<li>
-  <strong><a name="PrintPhenotypeData">PrintPhenotypeData</a></strong>
-  [<span class="cmdarg">string filename='phenotype_count.dat'</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="InsertionLandscape">InsertionLandscape</a></strong>
+  <i>[string filename="land-ins.dat"] [int distance=1] [string sitecount_file=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="MutationalNeighborhood">MutationalNeighborhood</a></strong>
+  <i>[string fname="mut-neighborhood.dat"] [int target=-1]</i>
+  </p>
   <p>
-  Print the number of phenotypes based on tasks executed this update.  Executing
-  a task any number of times is considered the same as executing it once. 
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintPhenotypeStatus">PrintPhenotypeStatus</a></strong>
-  [<span class="cmdarg">string filename='phenotype_status.dat'</span>]
+<li><p>
+  <strong><a name="PairTestLandscape">PairTestLandscape</a></strong>
+  <i>[string filename=""] [int sample_size=0]</i>
+  </p>
+  <p>
+    If sample_size = 0, pairtest the full landscape.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrecalcLandscape">PrecalcLandscape</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
+    Precalculate the distance 1 full landscape for the current batch in parallel
+  using multiple threads.  The resulting data is stored into the current batch
+  and can be used by many subsequent output commands within Analyze mode.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="PredictNuLandscape">PredictNuLandscape</a></strong>
+  <i>[string filename="land-predict.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PredictWLandscape">PredictWLandscape</a></strong>
+  <i>[string filename="land-predict.dat"]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDemeStats">PrintDemeStats</a></strong>
+<li><p>
+  <strong><a name="RandomLandscape">RandomLandscape</a></strong>
+  <i>[string filename="land-random.dat"] [int distance=1] [int trials=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SampleLandscape">SampleLandscape</a></strong>
+  <i>[string filename="land-sample.dat"] [int trials=0]</i>
+  </p>
   <p>
+  
   </p>
 </li>
+</UL>
+<p>&nbsp;</p>
+<h2><a name="PopulationActions">Population Actions</a></h2>
 
-<!-------- Processed Data -------->
-<li>
-  <strong><a name="PrintData">PrintData</a></strong>
-  &lt;<span class="cmdarg">string fname</span>&gt; &lt;<span class="cmdarg">string format</span>&gt;
+<p>
+Population events modify the state of the population, and will actually
+change the course of the run.  There are a wide variety of these.
+</p>
+<UL>
+<li><p>
+  <strong><a name="apocalypse">apocalypse</a></strong>
+  <i>[double probability=0.9]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="compete_demes">compete_demes</a></strong>
+  <i>[int type=1]</i>
+  </p>
   <p>
-  Append to the file specified (continuous output), the data given in the
-  column list.  The column list needs to be a comma-seperated list of
-  keywords representing the data types.  Many possible data types can be
-  output; see the <a href="print_data.html">complete listing</a> for details.
-  Note that this event will even create a detailed column legend at the top
-  of your file so you don't need to seperately keep track of what the
-  columns mean.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintInstructionAbundanceHistogram">PrintInstructionAbundanceHistogram</a></strong>
-  [<span class="cmdarg">string filename='instruction_histogram.dat'</span>]
+<li><p>
+  <strong><a name="compete_organisms">compete_organisms</a></strong>
+  <i>[int type=1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="CompeteDemes">CompeteDemes</a></strong>
+  <i>[int type=1]</i>
+  </p>
   <p>
-  Appends a line containing the bulk count (abundance) of each instruction
-  in the population onto a file.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDepthHistogram">PrintDepthHistogram</a></strong>
-  [<span class="cmdarg">string filename='depth_histogram.dat'</span>]
-  
+<li><p>
+  <strong><a name="CompeteOrganisms">CompeteOrganisms</a></strong>
+  <i>[int type=0] [int parents_survive=0] [double scaled_time=1.0] [int dynamic_scaling=0]</i>
+  </p>
   <p>
+    Calculates fitness of each organism in the population and creates a new population of descendants
+  where each organism has a chance of replication proportional to its fitness. Can be used to make Avida 
+  operate without population dynamics and asynchronous replication, i.e. like a genetic algorithm. If NewTrial 
+  events have occurred since the last CompeteOrganisms event, then the average fitness over those trials 
+  will be used.
   </p>
+ 
+  <code>competition_type</code> controls how the fitnesses of multiple trials determine the overall fitness
+  used for the competition: 0=geometric mean of fitnesses, 1=scaled geometric mean of fitnesses (the greatest fitness
+  of each trial is scaled to 1.0 before taking the geometric mean), 2=arithmetic mean, 3=geometric mean plus 
+  rescales effective fitness values by the geometric mean of the difference from the top score and the median.
+ <p>Setting <code>parents_survive</code> to 1, causes the first copy of an organism that makes it into the new 
+  population to be the original (unmutated) parent organism.
+
+  </p>
 </li>
-<li>
-  <strong><a name="Echo">Echo</a></strong>
-  &lt;<span class="cmdarg">string message</span>&gt;
+<li><p>
+  <strong><a name="connect_cells">connect_cells</a></strong>
+  <i>&lt;int cellA_x&gt; &lt;int cellA_y&gt; &lt;int cellB_x&gt; &lt;int cellB_y&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="ConnectCells">ConnectCells</a></strong>
+  <i>&lt;int cellA_x&gt; &lt;int cellA_y&gt; &lt;int cellB_x&gt; &lt;int cellB_y&gt;</i>
+  </p>
   <p>
-  Print the supplied message to standard output.
+    Connects a pair of specified cells.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintGenotypeAbundanceHistogram">PrintGenotypeAbundanceHistogram</a></strong>
-  [<span class="cmdarg">string fname='genotype_abundance_histogram.dat'</span>]
+<li><p>
+  <strong><a name="copy_deme">copy_deme</a></strong>
+  <i>&lt;int src_id&gt; &lt;int dest_id&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="CopyDeme">CopyDeme</a></strong>
+  <i>&lt;int src_id&gt; &lt;int dest_id&gt;</i>
+  </p>
   <p>
-  Writes out a genotype abundance histogram.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintSpeciesAbundanceHistogram">PrintSpeciesAbundanceHistogram</a></strong>
-  [<span class="cmdarg">string fname='species_abundance_histogram.dat'</span>]
+<li><p>
+  <strong><a name="disconnect_cells">disconnect_cells</a></strong>
+  <i>&lt;int cellA_x&gt; &lt;int cellA_y&gt; &lt;int cellB_x&gt; &lt;int cellB_y&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DisconnectCells">DisconnectCells</a></strong>
+  <i>&lt;int cellA_x&gt; &lt;int cellA_y&gt; &lt;int cellB_x&gt; &lt;int cellB_y&gt;</i>
+  </p>
   <p>
-  Writes out a species abundance histogram.
+    Disconnects a pair of specified cells.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintLineageTotals">PrintLineageTotals</a></strong>
-  [<span class="cmdarg">string fname='lineage_totals.dat'</span>] [<span class="cmdarg">int verbose=1</span>]
+<li><p>
+  <strong><a name="DivideDemes">DivideDemes</a></strong>
+  <i>No arguments (yet!)</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="inject">inject</a></strong>
+  <i>[string fname="START_CREATURE"] [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintLineageCounts">PrintLineageCounts</a></strong>
-  [<span class="cmdarg">string fname='lineage_counts.dat'</span>] [<span class="cmdarg">int verbose=1</span>]
+<li><p>
+  <strong><a name="Inject">Inject</a></strong>
+  <i>[string fname="START_CREATURE"] [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
+    Inject a single organisms into the population.  Arguments must be
+  included from left to right; if all arguments are left out, the default
+  creature is the ancestral organism, and it will be injected into cell 0,
+  have an uninitialized merit, and be marked as liniage id 0.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="inject_all">inject_all</a></strong>
+  <i>[string fname="START_CREATURE"] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="inject_all_random_repro">inject_all_random_repro</a></strong>
+  <i>&lt;int length&gt; [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDominantGenotype">PrintDominantGenotype</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="inject_random">inject_random</a></strong>
+  <i>&lt;int length&gt; [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="inject_range">inject_range</a></strong>
+  <i>[string fname="START_CREATURE"] [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
   <p>
-  Print the dominant organism's genome (and lots of information about it)
-  into the file specified.  If no filename is given, the genotype's assigned name
-  is used and the file is placed into the archive subdirectory.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDominantParasiteGenotype">PrintDominantParasiteGenotype</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="inject_sequence">inject_sequence</a></strong>
+  <i>[string fname="START_CREATURE"] [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="InjectAll">InjectAll</a></strong>
+  <i>[string fname="START_CREATURE"] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
   <p>
-  Print the dominant parasite's genome (and lots of information about it)
-  into the file specified.  If no filename is given, the parasite's assigned name
-  is used and the file is placed into the archive subdirectory.
+    Same as Inject, but no cell_id is specified and the organism is placed
+  into <em>all</em> cells in the population.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintDetailedFitnessData">PrintDetailedFitnessData</a></strong>
-  [<span class="cmdarg">int save_max_f_genotype=0</span>] [<span class="cmdarg">int print_fitness_histo=0</span>]
-  [<span class="cmdarg">double hist_fmax=1</span>] [<span class="cmdarg">double hist_fstep=0.1</span>]
-  [<span class="cmdarg">string datafn='fitness.dat'</span>]
-  [<span class="cmdarg">string histofn='fitness_histos.dat'</span>]
-  [<span class="cmdarg">string histotestfn='fitness_histos_testCPU.dat'</span>]
+<li><p>
+  <strong><a name="InjectDemes">InjectDemes</a></strong>
+  <i>[string fname="START_CREATURE"] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="InjectParasite">InjectParasite</a></strong>
+  <i>&lt;string filename&gt; &lt;string label&gt; [int cell_start=0] [int cell_end=-1]</i>
+  </p>
   <p>
+    Attempt to inject a parasite genome into the supplied population cell
+  range with the specified label.
+
   </p>
 </li>
+<li><p>
+  <strong><a name="InjectParasitePair">InjectParasitePair</a></strong>
+  <i>&lt;string filename_genome&gt; &lt;string filename_parasite&gt; &lt;string label&gt; [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
+    Inject host parasite pairs into the population cell range specified. 
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="InjectRandom">InjectRandom</a></strong>
+  <i>&lt;int length&gt; [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
+    Injects a randomly generated genome of the supplied length into the population.
 
-<li>
-  <strong><a name="PrintLogFitnessHistogram">PrintLogFitnessHistogram</a></strong>
-  [<span class="cmdarg">string filename="fitness_log_hist.dat"</span>]
-  [<span class="cmdarg">string mode="CURRENT"</span>] 
-  [<span class="cmdarg">double lower_bound=-3.0</span>] 
-  [<span class="cmdarg">double step=0.5</span>] 
-  [<span class="cmdarg">double upper_bound=12.0</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="InjectRange">InjectRange</a></strong>
+  <i>[string fname="START_CREATURE"] [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
   <p>
-    Print a histogram of organism fitnesses in the current population.
-    <br />This action will only work in run mode.
-    <br/>
-    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
-      <br />
-    <kbd>lower_bound, step, upper_bound</kbd> are log10 values for the individual histogram bins.</kbd>
+    Injects identical organisms into a range of cells of the population.
   </p>
+  <p>
+  <em>Example</em>:
+  <br /><code>InjectRange 000-aaaaa.org 0 10</code>
+  <br />Will inject 10 organisms into cells 0 through 9.
+
+  </p>
 </li>
+<li><p>
+  <strong><a name="InjectSequence">InjectSequence</a></strong>
+  <i>&lt;string sequence&gt; [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
+    Injects identical organisms based on the supplied genome sequence into
+  a range of cells of the population.
+  </p>
+  <p>
+  <em>Example</em>:
+  <br /><code>InjectSequence ckdfhgklsahnfsaggdsgajfg 0 10 100</code>
+  <br />Will inject 10 organisms into cells 0 through 9 with a merit of 100.
 
-<li>
-  <strong><a name="PrintRelativeFitnessHistogram">PrintRelativeFitnessHistogram</a></strong>
-  [<span class="cmdarg">string filename="rel_fitness_histogram.dat"</span>]
-  [<span class="cmdarg">string mode="CURRENT"</span>] 
-  [<span class="cmdarg">double lower_bound=0.0</span>] 
-  [<span class="cmdarg">double step=0.1</span>] 
-  [<span class="cmdarg">double upper_bound=2.0</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="join_grid_col">join_grid_col</a></strong>
+  <i>[int col_id=-1] [int min_row=0] [int max_row=-1]</i>
+  </p>
   <p>
-    Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.
-    <br />This action will only work in run mode.
-    <br/>
-    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
-      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
-      <br />
-    <kbd>lower_bound, step, upper_bound</kbd> are values for the individual histogram bins.</kbd>
+  
   </p>
 </li>
+<li><p>
+  <strong><a name="join_grid_row">join_grid_row</a></strong>
+  <i>[int row_id=-1] [int min_col=0] [int max_col=-1]</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
+  <strong><a name="JoinGridCol">JoinGridCol</a></strong>
+  <i>[int col_id=-1] [int min_row=0] [int max_row=-1]</i>
+  </p>
+  <p>
+    Add connections between cells along a column in an Avida grid.
 
-<li>
-  <strong><a name="PrintGenomicSiteEntropy">PrintGenomicSiteEntropy</a></strong>
-  [<span class="cmdarg">string filename="GenomicSiteEntropy.dat"</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="JoinGridRow">JoinGridRow</a></strong>
+  <i>[int row_id=-1] [int min_col=0] [int max_col=-1]</i>
+  </p>
   <p>
-   This function will take the initial genotype for each organism in the
-   population/batch, align them, and calculate the per-site entropy of the
-   aligned sequences.  Please note that there may be a variable number
-   of columns in each line if the runs are not fixed length.  The site
-   entropy will be measured in mers, normalized by the instruction set size.
-   This is a population/batch measure of entropy, not a mutation-selection balance
-   measure.  
+    Add connections between cells along a row in an Avida grid.
+
   </p>
 </li>
+<li><p>
+  <strong><a name="kill_rectangle">kill_rectangle</a></strong>
+  <i>[int x1=0] [int y1=0] [int x2=0] [int y2=0]</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
+  <strong><a name="KillProb">KillProb</a></strong>
+  <i>[double probability=0.9]</i>
+  </p>
+  <p>
+    Using the specified probability, test each organism to see if it is killed off.
 
-<li>
-  <strong><a name="PrintPhenotypicPlasticity">PrintPhenotypicPlasticity</a></strong>
-  [<span class="cmdarg">string filename="phenplast.dat | phenplast-Update.dat"</span>] [<span class="cmdarg">int num_trials=1000</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="KillRate">KillRate</a></strong>
+  <i>[double probability=0.9]</i>
+  </p>
   <p>
-  This function will provided detailed information about the phenotypic varients
-  of the current population/batch by running each genome through a test cpu <kbd>num_trials</kbd> times.
-  If this command is executed in run mode, the
-  <kbd>filename</kbd> will be appeneded with <kbd>-Update.dat</kbd> where <kbd>Update</kbd>
-  is the current update.  In analyze mode, the default file is merely </kbd>phenplast.dat</kbd>.
-  The output file contains the following: id, parent_id, phenotypic_varient_number, frequency, fitness, merit, 
-  gestation_time, and task counts for each phenotypic variant of each genotype.  
+    Randomly removes a certain proportion of the population.
+  In principle, this action does the same thing as the KillProb event.
+  However, instead of a probability, here one has to specify a rate. The
+  rate has the same unit as fitness. So if the average fitness is 20000,
+  than you remove 50% of the population on every update with a removal rate
+  of 10000.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintGeneticDistanceData">PrintGeneticDistanceData</a></strong>
-  [<span class="cmdarg">string ref_creature_file='START_CREATURE'</span>]
-  [<span class="cmdarg">string filename='genetic_distance.dat'</span>]
-   
+<li><p>
+  <strong><a name="KillRectangle">KillRectangle</a></strong>
+  <i>[int x1=0] [int y1=0] [int x2=0] [int y2=0]</i>
+  </p>
   <p>
+    Kill off all organisms in a rectangle defined by the points (x1, y1) and (x2, y2).
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintPopulationDistanceData">PrintPopulationDistanceData</a></strong>
-  [<span class="cmdarg">string creature='START_CREATURE'</span>] [<span class="cmdarg">string fname=''</span>]
-  [<span class="cmdarg">int save_genotypes=0</span>]
+<li><p>
+  <strong><a name="ModMutProb">ModMutProb</a></strong>
+  <i>[string mut_type="copy"] [double prob=0.0] [int start_cell=-1] [int end_cell=-1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="new_trial">new_trial</a></strong>
+  <i>[int type=1]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintDebug">PrintDebug</a></strong>
-  
+<li><p>
+  <strong><a name="NewTrial">NewTrial</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
+    Immediately calculates the fitness of each organism in the population, saves this value for use with the CompeteOrganisms
+  event, and resets the state of all organisms.
+
   </p>
 </li>
-
-<li>
-  <strong><a name="PrintGenotypes">PrintGenotypes</a></strong>
-  [<span class="cmdarg">string data_fields='all'</span>]
-  [<span class="cmdarg">int print_historic=0</span>]
-  [<span class="cmdarg">string filename='genotypes-&lt;update&gt;.dat'</span>]
+<li><p>
+  <strong><a name="rate_kill">rate_kill</a></strong>
+  <i>&lt;double probability&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="replicate_demes">replicate_demes</a></strong>
+  <i>[string trigger=full_deme]</i>
+  </p>
   <p>
-  This command is used to print out information about all of the genotypes
-  in the population.  The file output from here can be read
-  back into the analyze mode of Avida with the <code>LOAD</code> command.
+  
   </p>
+</li>
+<li><p>
+  <strong><a name="ReplicateDemes">ReplicateDemes</a></strong>
+  <i>[string trigger=full_deme]</i>
+  </p>
   <p>
-  The <span class="cmdarg">data_fields</span> parameter indicates what
-  columns should be included in the file, which must be comma seperated.
-  Options are:
-  <em>all, id, parent_id, parent2_id (for sex), parent_dist, num_cpus,
-  total_cpus, length, merit, gest_time, fitness, update_born, update_dead,
-  depth, lineage, sequence.</em>
-  Use <em>all</em> (the default) if you want all of the fields included.
+  
   </p>
+</li>
+<li><p>
+  <strong><a name="reset_demes">reset_demes</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  The <span class="cmdarg">print_historic</span> parameter indicates how
-  many updates back in time should be included in this output.  For example,
-  '200' would indicate that any ancestor of the current population that died
-  out in the last 200 updates should also be printed. A '-1' in this field
-  indicates that all ancestors should be printed.
+  
   </p>
+</li>
+<li><p>
+  <strong><a name="ResetDemes">ResetDemes</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  The <span class="cmdarg">filename</span> parameter simply indicates what
-  you want to call the file.
+  
   </p>
+</li>
+<li><p>
+  <strong><a name="serial_transfer">serial_transfer</a></strong>
+  <i>[int transfer_size=1] [int ignore_deads=1]</i>
+  </p>
   <p>
-  <em>Example</em>:
-  <br />&nbsp;&nbsp;<kbd>u 1000:1000 print_genotypes id,parent_id,fitness 1000</kbd>
-  <br />This will print out the full population every 1000 updates, including all
-  genotypes that have died out since the last time it was printed.
+  
   </p>
 </li>
+<li><p>
+  <strong><a name="SerialTransfer">SerialTransfer</a></strong>
+  <i>[int transfer_size=1] [int ignore_deads=1]</i>
+  </p>
+  <p>
+    Similar to KillProb, but we specify the exact number of organisms to
+  keep alive after the event.  The <span class="cmdarg">ignore_deads</span>
+  argument determines whether only living organisms are retainted.
 
-<li>
-  <strong><a name="TestDominant">TestDominant</a></strong>
-  [<span class="cmdarg">string fname='dom-test.dat'</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetMutProb">SetMutProb</a></strong>
+  <i>[string mut_type="copy"] [double prob=0.0] [int start_cell=-1] [int end_cell=-1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="sever_grid_col">sever_grid_col</a></strong>
+  <i>[int col_id=-1] [int min_row=0] [int max_row=-1]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintTaskSnapshot">PrintTaskSnapshot</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="sever_grid_row">sever_grid_row</a></strong>
+  <i>[int row_id=-1] [int min_col=0] [int max_col=-1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SeverGridCol">SeverGridCol</a></strong>
+  <i>[int col_id=-1] [int min_row=0] [int max_row=-1]</i>
+  </p>
   <p>
-  Run all organisms in the population through test cpus and print out the
-  number of tasks each can perform.
+    Remove the connections between cells along a column in an Avida grid.
+
   </p>
 </li>
-<li>
-  <strong><a name="PrintViableTasksData">PrintViableTasksData</a></strong>
-  [<span class="cmdarg">string fname='viable_tasks.dat'</span>]
+<li><p>
+  <strong><a name="SeverGridRow">SeverGridRow</a></strong>
+  <i>[int row_id=-1] [int min_col=0] [int max_col=-1]</i>
+  </p>
+  <p>
+    Remove the connections between cells along a row in an Avida grid.
+
+  </p>
+</li>
+<li><p>
+  <strong><a name="swap_cells">swap_cells</a></strong>
+  <i>&lt;int cell_id1&gt; &lt;int cell_id2&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SwapCells">SwapCells</a></strong>
+  <i>&lt;int cell_id1&gt; &lt;int cell_id2&gt;</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PrintTreeDepths">PrintTreeDepths</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="ToggleFitnessValley">ToggleFitnessValley</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="ToggleRewardInstruction">ToggleRewardInstruction</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  Reconstruction of phylogenetic trees.
+  
   </p>
 </li>
+<li><p>
+  <strong><a name="zero_muts">zero_muts</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
+  <strong><a name="ZeroMuts">ZeroMuts</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
+    This event will set all mutation rates to zero.
 
+  </p>
+</li>
+</UL>
+<p>&nbsp;</p>
+<h2><a name="PrintActions">Print Actions</a></h2>
 
-<!-------- Grid Information Dumps -------->
-<li>
-  <strong><a name="DumpMemory">DumpMemory</a></strong>
-  [<span class="cmdarg">string filename='memory_dump-&lt;update&gt;.dat'</span>]
+<p>
+Output events are the primary way of saving data from an Avida experiments.
+The main two types are <em>continuous output</em>, which append to a single file 
+every time the event is trigged, and <em>singular output</em>, which produce
+a single, complete file for each trigger.
+</p>
+<UL>
+<li><p>
+  <strong><a name="dump_donor_grid">dump_donor_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="dump_fitness_grid">dump_fitness_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Dump memory summary information.
+  
   </p>
 </li>
-<li>
-  <strong><a name="DumpFitnessGrid">DumpFitnessGrid</a></strong>
-  [<span class="cmdarg">string filename='grid_fitness.&lt;update&gt;.dat'</span>]
+<li><p>
+  <strong><a name="dump_genotype_grid">dump_genotype_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="dump_lineage_grid">dump_lineage_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Print out the grid of organism fitness values.
+  
   </p>
 </li>
-<li>
-  <strong><a name="DumpGenotypeIDGrid">DumpGenotypeIDGrid</a></strong>
-  [<span class="cmdarg">string filename='grid_genotype_id.&lt;update&gt;.dat'</span>]
+<li><p>
+  <strong><a name="dump_memory">dump_memory</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="dump_phenotype_grid">dump_phenotype_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Print out the grid of genotype IDs.
+  
   </p>
 </li>
-<li>
-  <strong><a name="DumpTaskGrid">DumpTaskGrid</a></strong>
-  [<span class="cmdarg">string filename='grid_task.&lt;update&gt;.dat'</span>]
-
+<li><p>
+  <strong><a name="dump_receiver_grid">dump_receiver_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Print out the grid of takss that organisms do. For each organism, tasks are first 
-  encoded as a binary string (e.g. 100000001 means that organism is doing NOT and EQU
-  and then reported as a base-10 number (257 in the example above).
+  
   </p>
 </li>
-<li>
-  <strong><a name="DumpDonorGrid">DumpDonorGrid</a></strong>
-  [string filename='grid_donor.&lt;update&gt;.dat'</span>]
+<li><p>
+  <strong><a name="dump_task_grid">dump_task_grid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpCellDataGrid">DumpCellDataGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Print out the grid of organisms who donated their merit.
+  
   </p>
 </li>
-<li>
-  <strong><a name="DumpReceiverGrid">DumpRecieverGrid</a></strong>
-  [<span class="cmdarg">string filename='grid_receiver.&lt;update&gt;.dat'</span>]
-  
+<li><p>
+  <strong><a name="DumpDonorGrid">DumpDonorGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Print out the grid of organisms who received merit.
+    Print out the grid of organisms who donated their merit.
+
   </p>
 </li>
-<li>
-  <strong><a name="SetVerbose">SetVerbose</a></strong>
-  [<span class="cmdarg">string verbosity=''</span>]
+<li><p>
+  <strong><a name="DumpEnergyGrid">DumpEnergyGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpExecutionRatioGrid">DumpExecutionRatioGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Change the level of output verbosity.  Verbose messages will print all
-  of the details of what is happening to the screen.  Minimal messages
-  will only briefly state the process being run.  Verbose messages are
-  recommended if you're in interactive analysis mode. When no arguments
-  are supplied, action will toggle between NORMAL and ON.
-  <br />Levels: SILENT, NORMAL, ON, DETAILS, DEBUG
+  
   </p>
 </li>
-</ul>
+<li><p>
+  <strong><a name="DumpFitnessGrid">DumpFitnessGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
+    Print out the grid of organism fitness values.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpGenotypeIDGrid">DumpGenotypeIDGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
+    Print out the grid of genotype IDs.
 
-<p>&nbsp;</p>
-<h2><a name="PopulationActions">Population Actions</a></h2>
-
-<p>
-Population events modify the state of the population, and will actually
-change the course of the run.  There are a wide variety of these.
-</p>
-<ul>
-<li>
-  <strong><a name="Inject">Inject</a></strong>
-  [<span class="cmdarg">string fname='START_CREATURE'</span>] [<span class="cmdarg">int cell_id=0</span>]
-  [<span class="cmdarg">double merit=-1</span>] [<span class="cmdarg">int lineage_label=0</span>]
-  [<span class="cmdarg">double neutral_metric=0</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpLineageGrid">DumpLineageGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpMemory">DumpMemory</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Inject a single organisms into the population.  Arguments must be
-  included from left to right; if all arguments are left out, the default
-  creature is the ancestral organism, and it will be injected into cell 0,
-  have an uninitialized merit, and be marked as liniage id 0.
+    Dump memory summary information.
+
   </p>
 </li>
-<li>
-  <strong><a name="InjectRandom">InjectRandom</a></strong>
-  &lt;<span class="cmdarg">int length</span>&gt; [<span class="cmdarg">int cell_id=0</span>]
-  [<span class="cmdarg">double merit=-1</span>] [<span class="cmdarg">int lineage_label=0</span>]
-  [<span class="cmdarg">double neutral_metric=0</span>]
+<li><p>
+  <strong><a name="DumpPhenotypeIDGrid">DumpPhenotypeIDGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpReceiverGrid">DumpReceiverGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Injects a randomly generated genome of the supplied length into the population.
+  
   </p>
 </li>
-<li>
-  <strong><a name="InjectAll">InjectAll</a></strong>
-  [<span class="cmdarg">string fname='START_CREATURE'</span>] [<span class="cmdarg">double merit=-1</span>]
-  [<span class="cmdarg">int lineage_label=0] [<span class="cmdarg">double neutral_metric=0</span>]
+<li><p>
+  <strong><a name="DumpSleepGrid">DumpSleepGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="DumpTaskGrid">DumpTaskGrid</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Same as Inject, but no cell_id is specified and the organism is placed
-  into <em>all</em> cells in the population.
+    Print out the grid of takss that organisms do. For each organism, tasks are first 
+  encoded as a binary string (e.g. 100000001 means that organism is doing NOT and EQU
+  and then reported as a base-10 number (257 in the example above).
+
   </p>
 </li>
-<li>
-  <strong><a name="InjectRange">InjectRange</a></strong>
-  [<span class="cmdarg">string fname='START_CREATURE'</span>] [<span class="cmdarg">int cell_start=0</span>]
-  [<span class="cmdarg">int cell_end=-1</span>] [<span class="cmdarg">double merit=-1</span>]
-  [<span class="cmdarg">int lineage_label=0</span>] [<span class="cmdarg">double neutral_metric=0</span>]
-  
+<li><p>
+  <strong><a name="Echo">Echo</a></strong>
+  <i>&lt;cString message&gt;</i>
+  </p>
   <p>
-  Injects identical organisms into a range of cells of the population.
+    Print the supplied message to standard output.
+
   </p>
+</li>
+<li><p>
+  <strong><a name="echo">echo</a></strong>
+  <i>&lt;cString message&gt;</i>
+  </p>
   <p>
-  <em>Example</em>:
-  <br /><code>InjectRange 000-aaaaa.org 0 10</code>
-  <br />Will inject 10 organisms into cells 0 through 9.
+  
   </p>
 </li>
-<li>
-  <strong><a name="InjectSequence">InjectSequence</a></strong>
-  &lt;<span class="cmdarg">string sequence</span>&gt; [<span class="cmdarg">int cell_start=0</span>]
-  [<span class="cmdarg">int cell_end=-1</span>] [<span class="cmdarg">double merit=-1</span>]
-  [<span class="cmdarg">int lineage_label=0</span>] [<span class="cmdarg">double neutral_metric=0</span>]
+<li><p>
+  <strong><a name="genetic_distance_pop_dump">genetic_distance_pop_dump</a></strong>
+  <i>[string creature="START_CREATURE"] [string fname=""] [int save_genotypes=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_average_data">print_average_data</a></strong>
+  </p>
   <p>
-  Injects identical organisms based on the supplied genome sequence into
-  a range of cells of the population.
+  
   </p>
+</li>
+<li><p>
+  <strong><a name="print_count_data">print_count_data</a></strong>
+  </p>
   <p>
-  <em>Example</em>:
-  <br /><code>InjectSequence ckdfhgklsahnfsaggdsgajfg 0 10 100</code>
-  <br />Will inject 10 organisms into cells 0 through 9 with a merit of 100.
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="InjectParasite">InjectParasite</a></strong>
-  &lt;<span class="cmdarg">string filename</span>&gt; &lt;<span class="cmdarg">string label</span>&gt;
-  [<span class="cmdarg">int cell_start=0</span>] [<span class="cmdarg">int cell_end=-1</span>]
+<li><p>
+  <strong><a name="print_data">print_data</a></strong>
+  <i>&lt;cString fname&gt; &lt;cString format&gt;</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_deme_stats">print_deme_stats</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  Attempt to inject a parasite genome into the supplied population cell
-  range with the specified label.
+  
   </p>
 </li>
-<li>
-  <strong><a name="InjectParasitePair">InjectParasitePair</a></strong>
-  &lt;<span class="cmdarg">string filename_genome</span>&gt; &lt;<span class="cmdarg">string filename_parasite</span>&gt;
-  &lt;<span class="cmdarg">string label</span>&gt; [<span class="cmdarg">int cell_start=0</span>]
-  [<span class="cmdarg">int cell_end=-1</span>] [<span class="cmdarg">double merit=-1</span>]
-  [<span class="cmdarg">int lineage_label=0</span>] [<span class="cmdarg">double neutral_metric=0</span>]
+<li><p>
+  <strong><a name="print_depth_histogram">print_depth_histogram</a></strong>
+  <i>[string fname="depth_histogram.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_detailed_fitness_data">print_detailed_fitness_data</a></strong>
+  <i>[int save_max_f_genotype=0] [int print_fitness_histo=0] [double hist_fmax=1] [double hist_fstep=0.1] [string datafn="fitness.dat"] [string histofn="fitness_histos.dat"] [string histotestfn="fitness_histos_testCPU.dat"]</i>
+  </p>
   <p>
-  Inject host parasite pairs into the population cell range specified. 
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="KillProb">KillProb</a></strong>
-  [<span class="cmdarg">double probability=0.9</span>]
+<li><p>
+  <strong><a name="print_divide_mut_data">print_divide_mut_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_dom">print_dom</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Using the specified probability, test each organism to see if it is killed off.
+  
   </p>
 </li>
-<li>
-  <strong><a name="KillRate">KillRate</a></strong>
-  [<span class="cmdarg">double probability=0.9</span>]
+<li><p>
+  <strong><a name="print_dom_parasite">print_dom_parasite</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_dominant_data">print_dominant_data</a></strong>
+  </p>
   <p>
-  Randomly removes a certain proportion of the population.
-  In principle, this action does the same thing as the KillProb event.
-  However, instead of a probability, here one has to specify a rate. The
-  rate has the same unit as fitness. So if the average fitness is 20000,
-  than you remove 50% of the population on every update with a removal rate
-  of 10000.
+  
   </p>
 </li>
-<li>
-  <strong><a name="KillRectangle">KillRectangle</a></strong>
-  [<span class="cmdarg">int x1=0</span>] [<span class="cmdarg">int y1=0</span>]
-  [<span class="cmdarg">int x2=0</span>] [<span class="cmdarg">int y2=0</span>]
+<li><p>
+  <strong><a name="print_donation_stats">print_donation_stats</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_error_data">print_error_data</a></strong>
+  </p>
   <p>
-  Kill off all organisms in a rectangle defined by the points (x1, y1) and (x2, y2).
+  
   </p>
 </li>
-<li>
-  <strong><a name="SerialTransfer">SerialTransfer</a></strong>
-  [<span class="cmdarg">int transfer_size=1</span>] [<span class="cmdarg">int ignore_deads=1</span>]
+<li><p>
+  <strong><a name="print_genetic_distance_data">print_genetic_distance_data</a></strong>
+  <i>[string ref_creature_file="START_CREATURE"] [string fname="genetic_distance.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_genotype_abundance_histogram">print_genotype_abundance_histogram</a></strong>
+  <i>[string fname="genotype_abundance_histogram.dat"]</i>
+  </p>
   <p>
-  Similar to KillProb, but we specify the exact number of organisms to
-  keep alive after the event.  The <span class="cmdarg">ignore_deads</span>
-  argument determines whether only living organisms are retainted.
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="SetMutProb">SetMutProb</a></strong>
-  [<span class="cmdarg">string mut_type='copy'</span>] [<span class="cmdarg">double prob=0.0</span>]
-  [<span class="cmdarg">int start_cell=-1</span>] [<span class="cmdarg">int end_cell=-1</span>]
+<li><p>
+  <strong><a name="print_genotype_map">print_genotype_map</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_genotypes">print_genotypes</a></strong>
+  <i>[string data_fields="all"] [int historic=0] [string fname=""]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="ModMutProb">ModMutProb</a></strong>
-  [<span class="cmdarg">string mut_type='copy'] [<span class="cmdarg">double prob=0.0</span>]
-  [<span class="cmdarg">int start_cell=-1</span>] [<span class="cmdarg">int end_cell=-1</span>]
+<li><p>
+  <strong><a name="print_instruction_abundance_histogram">print_instruction_abundance_histogram</a></strong>
+  <i>[string fname="instruction_histogram.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_instruction_data">print_instruction_data</a></strong>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="ZeroMuts">ZeroMuts</a></strong>
+<li><p>
+  <strong><a name="print_lineage_counts">print_lineage_counts</a></strong>
+  <i>[string fname="lineage_counts.dat"] [int verbose=1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_lineage_totals">print_lineage_totals</a></strong>
+  <i>[string fname="lineage_totals.dat"] [int verbose=1]</i>
+  </p>
   <p>
-  This event will set all mutation rates to zero.
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="CompeteDemes">CompeteDemes</a></strong>
-  [<span class="cmdarg">int type=1</span>]
+<li><p>
+  <strong><a name="print_market_data">print_market_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_mutation_rate_data">print_mutation_rate_data</a></strong>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="ResetDemes">ResetDemes</a></strong>
+<li><p>
+  <strong><a name="print_number_phenotypes">print_number_phenotypes</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_phenotype_status">print_phenotype_status</a></strong>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="CopyDeme">CopyDeme</a></strong>
-  &lt;<span class="cmdarg">int src_id</span>&gt; &lt;<span class="cmdarg">int dest_id</span>&gt;
+<li><p>
+  <strong><a name="print_resource_data">print_resource_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_species_abundance_histogram">print_species_abundance_histogram</a></strong>
+  <i>[string fname="species_abundance_histogram.dat"]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="SeverGridCol">SeverGridCol</a></strong>
-  [<span class="cmdarg">int col_id=-1</span>] [<span class="cmdarg">int min_row=0</span>]
-  [<span class="cmdarg">int max_row=-1</span>]
+<li><p>
+  <strong><a name="print_stats_data">print_stats_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_tasks_data">print_tasks_data</a></strong>
+  </p>
   <p>
-  Remove the connections between cells along a column in an Avida grid.
+  
   </p>
 </li>
-<li>
-  <strong><a name="SeverGridRow">SeverGridRow</a></strong>
-  [<span class="cmdarg">int row_id=-1</span>] [<span class="cmdarg">int min_col=0</span>]
-  [<span class="cmdarg">int max_col=-1</span>]
+<li><p>
+  <strong><a name="print_tasks_exe_data">print_tasks_exe_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_tasks_qual_data">print_tasks_qual_data</a></strong>
+  </p>
   <p>
-  Remove the connections between cells along a row in an Avida grid.
+  
   </p>
 </li>
-<li>
-  <strong><a name="JoinGridCol">JoinGridCol</a></strong>
-  [<span class="cmdarg">int col_id=-1</span>] [<span class="cmdarg">int min_row=0</span>]
-  [<span class="cmdarg">int max_row=-1</span>]
- 
+<li><p>
+  <strong><a name="print_time_data">print_time_data</a></strong>
+  </p>
   <p>
-  Add connections between cells along a column in an Avida grid.
+  
   </p>
 </li>
-<li>
-  <strong><a name="JoinGridRow">JoinGridRow</a></strong>
-  [<span class="cmdarg">int row_id=-1</span>] [<span class="cmdarg">int min_col=0</span>]
-  [<span class="cmdarg">int max_col=-1</span>]
+<li><p>
+  <strong><a name="print_totals_data">print_totals_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_tree_depths">print_tree_depths</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Add connections between cells along a row in an Avida grid.
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="ConnectCells">ConnectCells</a></strong>
-  &lt;<span class="cmdarg">int cellA_x</span>&gt; &lt;<span class="cmdarg">int cellA_y</span>&gt;
-  &lt;<span class="cmdarg">int cellB_x</span>&gt; &lt;<span class="cmdarg">int cellB_y</span>&gt;
+<li><p>
+  <strong><a name="print_variance_data">print_variance_data</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="print_viable_tasks_data">print_viable_tasks_data</a></strong>
+  <i>[string fname="viable_tasks.dat"]</i>
+  </p>
   <p>
-  Connects a pair of specified cells.
+  
   </p>
 </li>
-<li>
-  <strong><a name="DisconnectCells">DisconnectCells</a></strong>
-  &lt;<span class="cmdarg">int cellA_x</span>&gt; &lt;<span class="cmdarg">int cellA_y</span>&gt;
-  &lt;<span class="cmdarg">int cellB_x</span>&gt; &lt;<span class="cmdarg">int cellB_y</span>&gt;
-  
+<li><p>
+  <strong><a name="PrintAverageData">PrintAverageData</a></strong>
+  </p>
   <p>
-  Disconnects a pair of specified cells.
+    [<span class="cmdarg">string filename='average.dat'</span>]
+  Print all of the population averages the specified file.
+
   </p>
 </li>
-<li>
-  <strong><a name="NewTrial">NewTrial</a></strong>
+<li><p>
+  <strong><a name="PrintCCladeCounts">PrintCCladeCounts</a></strong>
+  <i>[filename = "cclade_count.dat"]</i>
+  </p>
   <p>
-  Immediately calculates the fitness of each organism in the population, saves this value for use with the CompeteOrganisms
-  event, and resets the state of all organisms.
+      Print a count of the number of oraganisms belonging to a each coalescence clade currently in the population.
+    <br />This action will only work in run mode.
+    <br />This action will require TRACK_CCLADE to be enabled.
+
   </p>
 </li>
-<li>
-  <strong><a name="CompeteOrganisms">CompeteOrganisms</a></strong>
-  &lt;<span class="cmdarg">int competition_type=0</span>&gt; &lt;<span class="cmdarg">int parents_survive=0</span>&gt; 
-  </span>&gt; &lt;<span class="cmdarg">int dynamic_scaling=0</span>&gt;
-  <p>Calculates fitness of each organism in the population and creates a new population of descendants
-  where each organism has a chance of replication proportional to its fitness. Can be used to make Avida 
-  operate without population dynamics and asynchronous replication, i.e. like a genetic algorithm. If NewTrial 
-  events have occurred since the last CompeteOrganisms event, then the average fitness over those trials 
-  will be used.
+<li><p>
+  <strong><a name="PrintCCladeFitnessHistogram">PrintCCladeFitnessHistogram</a></strong>
+  <i>[filename] [fit_mode] [hist_min] [hist_step] [hist_max]</i>
   </p>
- 
-  <code>competition_type</code> controls how the fitnesses of multiple trials determine the overall fitness
-  used for the competition: 0=geometric mean of fitnesses, 1=scaled geometric mean of fitnesses (the greatest fitness
-  of each trial is scaled to 1.0 before taking the geometric mean), 2=arithmetic mean, 3=geometric mean plus 
-  rescales effective fitness values by the geometric mean of the difference from the top score and the median.
- <p>Setting <code>parents_survive</code> to 1, causes the first copy of an organism that makes it into the new 
-  population to be the original (unmutated) parent organism.
+  <p>
+      Print a histogram of fitnesses for each coalescence clade in the population.
+    <br />This action will only work in run mode.
+    <br />This action will rerequire TRACK_CCLADE to be enabled.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are log10 values for the individual histogram bins.</kbd>
 
   </p>
 </li>
-</ul>
+<li><p>
+  <strong><a name="PrintCCladeRelativeFitnessHistogram">PrintCCladeRelativeFitnessHistogram</a></strong>
+  <i>[filename] [fit_mode] [hist_min] [hist_step] [hist_max]</i>
+  </p>
+  <p>
+      Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.
+    <br />This action will only work in run mode.
+    <br />This action will rerequire TRACK_CCLADE to be enabled.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are values for the individual histogram bins.</kbd>
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintCompetitionData">PrintCompetitionData</a></strong>
+  </p>
+  <p>
+    Print out CompeteOrganism statistics. Make the first call after the first set of trials has been completed to get a complete header.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintCountData">PrintCountData</a></strong>
+  </p>
+  <p>
+    Print all of the statistics the keep track of counts (such as the number of organisms
+  in the population or the number of instructions executed).
 
-<p>&nbsp;</p>
-<h2><a name="EnvironmentActions">Environment Actions</a></h2>
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintData">PrintData</a></strong>
+  <i>&lt;cString fname&gt; &lt;cString format&gt;</i>
+  </p>
+  <p>
+    Append to the file specified (continuous output), the data given in the
+  column list.  The column list needs to be a comma-seperated list of
+  keywords representing the data types.  Many possible data types can be
+  output; see the <a href="print_data.html">complete listing</a> for details.
+  Note that this event will even create a detailed column legend at the top
+  of your file so you don't need to seperately keep track of what the
+  columns mean.
 
-<p>
-Events that allow user to change environment properties, such as resources
-and reaction parameters.
-</p>
-<ul>
-<li>
-  <strong><a name="InjectResource">InjectResource</a></strong>
-  &lt;<span class="cmdarg">string res_name</span>&gt; &lt;<span class="cmdarg">double res_count</span>&gt;
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDebug">PrintDebug</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDemeAllStats">PrintDemeAllStats</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  Inject (add) a specified amount of a specified resource. 
-  <span class="cmdarg">res_name</span> must already exist as
-  a resource in environment file.
+  
   </p>
 </li>
-<li>
-  <strong><a name="InjectScaledResource">InjectScaledResource</a></strong>
-  &lt;<span class="cmdarg">string res_name</span>&gt; &lt;<span class="cmdarg">double res_count</span>&gt;
+<li><p>
+  <strong><a name="PrintDemeAverageData">PrintDemeAverageData</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDemeDonorStats">PrintDemeDonorStats</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="OutflowScaledResource">OutflowScaledResource</a></strong>
-  &lt;<span class="cmdarg">string res_name</span>&gt; &lt;<span class="cmdarg">double res_percent</span>&gt;
+<li><p>
+  <strong><a name="PrintDemeResourceStats">PrintDemeResourceStats</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDemeSpacialEnergyStats">PrintDemeSpacialEnergyStats</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
+  
   </p>
 </li>
-
-<li>
-  <strong><a name="SetEnvironmentInputs">SetEnvironmentInputs</a></strong>
-  &lt;<span class="cmdarg">int input.1</span>&gt; &lt;<span class="cmdarg">int input.2</span>&gt; 
-  &lt;<span class="cmdarg">int input.3</span>&gt;
+<li><p>
+  <strong><a name="PrintDemeSpacialSleepStats">PrintDemeSpacialSleepStats</a></strong>
+  <i>No Arguments</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDemeStats">PrintDemeStats</a></strong>
+  <i>No Arguments</i>
+  </p>
   <p>
-  Set the inputs that all organisms get from the environment when doing IO to these specific values. There must 
-  be exactly three inputs, and they must have the usual values for the top 8 "key" bits, i.e. they must be of the form
-  0x0F?????? 0x33?????? 0x55?????? where ? can be replaced with any hexadecimal digit.
+  
   </p>
 </li>
-
-
-<li>
-  <strong><a name="SetResource">SetResource</a></strong>
-  &lt;<span class="cmdarg">string res_name</span>&gt; &lt;<span class="cmdarg">double res_count</span>&gt;
+<li><p>
+  <strong><a name="PrintDepthHistogram">PrintDepthHistogram</a></strong>
+  <i>[string fname="depth_histogram.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDetailedFitnessData">PrintDetailedFitnessData</a></strong>
+  <i>[int save_max_f_genotype=0] [int print_fitness_histo=0] [double hist_fmax=1] [double hist_fstep=0.1] [string datafn="fitness.dat"] [string histofn="fitness_histos.dat"] [string histotestfn="fitness_histos_testCPU.dat"]</i>
+  </p>
   <p>
-  Set the resource amount to a specific level.
-  <span class="cmdarg">res_name</span> must already exist as
-  a resource in environment file.
+  
   </p>
 </li>
+<li><p>
+  <strong><a name="PrintDivideMutData">PrintDivideMutData</a></strong>
+  </p>
+  <p>
+    Output (regular and log) statistics about individual, per site, rates divide mutation
+  rates (aver, stdev, skew, cur) to divide_mut.dat. Use with multiple divide instuction set.
 
-<li>
-  <strong><a name="SetResourceInflow">SetResourceInflow</a></strong>
-  &lt;<span class="cmdarg">string res_name</span>&gt; &lt;<span class="cmdarg">double inflow</span>&gt;
-  
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDominantData">PrintDominantData</a></strong>
+  </p>
   <p>
-  Set the resource inflow to a specific level.
-  <span class="cmdarg">res_name</span> must already exist as
-  a resource in environment file.
+    Print all of the statistics relating to the dominant genotype.
+
   </p>
 </li>
+<li><p>
+  <strong><a name="PrintDominantGenotype">PrintDominantGenotype</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
+    Print the dominant organism's genome (and lots of information about it)
+  into the file specified.  If no filename is given, the genotype's assigned name
+  is used and the file is placed into the archive subdirectory.
 
-<li>
-  <strong><a name="SetResourceOutflow">SetResourceOutflow</a></strong>
-  &lt;<span class="cmdarg">string res_name</span>&gt; &lt;<span class="cmdarg">double outflow</span>&gt;
-  
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintDominantParasiteGenotype">PrintDominantParasiteGenotype</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Set the resource outflow to a specific level.
-  <span class="cmdarg">res_name</span> must already exist as
-  a resource in environment file.
+    Print the dominant parasite's genome (and lots of information about it)
+  into the file specified.  If no filename is given, the parasite's assigned name
+  is used and the file is placed into the archive subdirectory.
+
   </p>
 </li>
+<li><p>
+  <strong><a name="PrintErrorData">PrintErrorData</a></strong>
+  </p>
+  <p>
+    Print all of the standard errors of the average population statistics.
 
-
-<li>
-  <strong><a name="SetReactionValue">SetReactionValue</a></strong>
-  &lt;<span class="cmdarg">string reaction_name</span>&gt; &lt;<span class="cmdarg">double value</span>&gt;
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintGeneticDistanceData">PrintGeneticDistanceData</a></strong>
+  <i>[string ref_creature_file="START_CREATURE"] [string fname="genetic_distance.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintGenomicSiteEntropy">PrintGenomicSiteEntropy</a></strong>
+  <i>[filename = "GenomicSiteEntropyData.datcd "]</i>
+  </p>
   <p>
-  Set the reaction value to a specific level.
-  <span class="cmdarg">reaction_name</span> must already 
-  exist in the environment file.
-  <span class="cmdarg">value</span> can be negative. 
+     This function will take the initial genotype for each organism in the
+   population/batch, align them, and calculate the per-site entropy of the
+   aligned sequences.  Please note that there may be a variable number
+   of columns in each line if the runs are not fixed length.  The site
+   entropy will be measured in mers, normalized by the instruction set size.
+   This is a population/batch measure of entropy, not a mutation-selection balance
+   measure.  
+
   </p>
 </li>
-<li>
-  <strong><a name="SetReactionMinTaskCount">SetReactionMinTaskCount</a></strong>
-  &lt;<span class="cmdarg">string reaction_name</span>&gt; &lt;<span class="cmdarg">int task_count</span>&gt;
-  
+<li><p>
+  <strong><a name="PrintGenotypeAbundanceHistogram">PrintGenotypeAbundanceHistogram</a></strong>
+  <i>[string fname="genotype_abundance_histogram.dat"]</i>
+  </p>
   <p>
-  Set the min task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
-  <span class="cmdarg">reaction_name</span> must already 
-  exist in the environment file.
+    Writes out a genotype abundance histogram.
+
   </p>
 </li>
+<li><p>
+  <strong><a name="PrintGenotypeMap">PrintGenotypeMap</a></strong>
+  </p>
+  <p>
+    This event is used to output a map of the genotype IDs for the
+  population grid to a file that is suitable to be read into Matlab.
 
-<li>
-  <strong><a name="SetReactionMaxTaskCount">SetReactionMaxTaskCount</a></strong>
-  &lt;<span class="cmdarg">string reaction_name</span>&gt; &lt;<span class="cmdarg">int task_count</span>&gt;
-  
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintGenotypes">PrintGenotypes</a></strong>
+  <i>[string data_fields="all"] [int historic=0] [string fname=""]</i>
+  </p>
   <p>
-  Set the max task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
-  <span class="cmdarg">reaction_name</span> must already 
-  exist in the environment file.
+    This command is used to print out information about all of the genotypes
+  in the population.  The file output from here can be read
+  back into the analyze mode of Avida with the <code>LOAD</code> command.
   </p>
+  <p>
+  The <span class="cmdarg">data_fields</span> parameter indicates what
+  columns should be included in the file, which must be comma seperated.
+  Options are:
+  <em>all, id, parent_id, parent2_id (for sex), parent_dist, num_cpus,
+  total_cpus, length, merit, gest_time, fitness, update_born, update_dead,
+  depth, lineage, sequence.</em>
+  Use <em>all</em> (the default) if you want all of the fields included.
+  </p>
+  <p>
+  The <span class="cmdarg">print_historic</span> parameter indicates how
+  many updates back in time should be included in this output.  For example,
+  '200' would indicate that any ancestor of the current population that died
+  out in the last 200 updates should also be printed. A '-1' in this field
+  indicates that all ancestors should be printed.
+  </p>
+  <p>
+  The <span class="cmdarg">filename</span> parameter simply indicates what
+  you want to call the file.
+  </p>
+  <p>
+  <em>Example</em>:
+  <br />&nbsp;&nbsp;<kbd>u 1000:1000 print_genotypes id,parent_id,fitness 1000</kbd>
+  <br />This will print out the full population every 1000 updates, including all
+  genotypes that have died out since the last time it was printed.
+
+  </p>
 </li>
+<li><p>
+  <strong><a name="PrintInstructionAbundanceHistogram">PrintInstructionAbundanceHistogram</a></strong>
+  <i>[string fname="instruction_histogram.dat"]</i>
+  </p>
+  <p>
+    Appends a line containing the bulk count (abundance) of each instruction
+  in the population onto a file.
 
-<li>
-  <strong><a name="SetReactionValueMult">SetReactionValueMult</a></strong>
-  &lt;<span class="cmdarg">string reaction_name</span>&gt; &lt;<span class="cmdarg">double value</span>&gt;
-  
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintInstructionData">PrintInstructionData</a></strong>
+  </p>
   <p>
-  Multiply the reaction value by the <span class="cmdarg">value</span>.
-  <span class="cmdarg">reaction_name</span> must already 
-  exist in the environment file.
-  <span class="cmdarg">value</span> can be negative. 
+    Print the by-organisms counts of what instructions they _successfully_ executed
+  beteween birth and divide. Prior to their first divide, organisms values for their parents.
+
   </p>
 </li>
-<li>
-  <strong><a name="SetReactionInst">SetReactionInst</a></strong>
-  &lt;<span class="cmdarg">string reaction_name</span>&gt; &lt;<span class="cmdarg">string inst</span>&gt;
+<li><p>
+  <strong><a name="PrintLineageCounts">PrintLineageCounts</a></strong>
+  <i>[string fname="lineage_counts.dat"] [int verbose=1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintLineageTotals">PrintLineageTotals</a></strong>
+  <i>[string fname="lineage_totals.dat"] [int verbose=1]</i>
+  </p>
   <p>
-  Set the instruction triggered by this reaction.
-  <span class="cmdarg">reaction_name</span> must already
-  exist in the environment file.
-  <span class="cmdarg">inst</span> must be in the instruction set. 
+  
   </p>
 </li>
-</ul>
+<li><p>
+  <strong><a name="PrintLogFitnessHistogram">PrintLogFitnessHistogram</a></strong>
+  <i>Parameters: &lt;filename&gt; &lt;mode&gt; &lt;min&gt; &lt;step&gt; &lt;max&gt;</i>
+  </p>
+  <p>
+      Print a histogram of organism fitnesses in the current population.
+    <br />This action will only work in run mode.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are log10 values for the individual histogram bins.</kbd>
 
-
-
-<p>&nbsp;</p>
-<h2><a name="SaveLoadActions">Save Load Actions</a></h2>
-
-<p>
-</p>
-<ul>
-<li>
-  <strong><a name="SaveClone">SaveClone</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintMarketData">PrintMarketData</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintMutationRateData">PrintMutationRateData</a></strong>
+  </p>
   <p>
-  Save a clone of this organism to the file specified; if no filename is
-  given, use the name clone.<em>update</em>.  The update number allows regular
-  clones with distinct filenames to be saved with the same periodic event.
-  Running <kbd>avida -l filename</kbd> will start an Avida population with the
-  saved clone.  Note that a clone only consists of the genomes in
-  the population, and their current state is lost, so the run may not
-  proceed identically as to if it had continued as it was going.
+    Output (regular and log) statistics about individual copy mutation rates
+  (aver, stdev, skew, cur). Useful only when mutation rate is set per organism.
+
   </p>
 </li>
-<li>
-  <strong><a name="LoadClone">LoadClone</a></strong>
-  &lt;<span class="cmdarg">string fname</span>&gt;
+<li><p>
+  <strong><a name="PrintParasiteData">PrintParasiteData</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintPhenotypeData">PrintPhenotypeData</a></strong>
+  </p>
   <p>
+    [<span class="cmdarg">string filename='phenotype_count.dat'</span>]
+  Print the number of phenotypes based on tasks executed this update.  Executing
+  a task any number of times is considered the same as executing it once. 
+
   </p>
 </li>
-
-<li>
-  <strong><a name="LoadPopulation">LoadPopulation</a></strong>
-  &lt;<span class="cmdarg">string fname</span>&gt; [<span class="cmdarg">int update=-1</span>]
+<li><p>
+  <strong><a name="PrintPhenotypeStatus">PrintPhenotypeStatus</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintPhenotypicPlasticity">PrintPhenotypicPlasticity</a></strong>
+  <i>[string filename="phenplast"] [int num_trials=1000]</i>
+  </p>
   <p>
-  Sets up a population based on a save file such as written out by
-  SavePopulation. It is also possible to append a history file to the
-  save file, in order to preserve the history of a previous run.
+    This function will provided detailed information about the phenotypic varients
+  of the current population/batch by running each genome through a test cpu <kbd>num_trials</kbd> times.
+  If this command is executed in run mode, the
+  <kbd>filename</kbd> will be appeneded with <kbd>-Update.dat</kbd> where <kbd>Update</kbd>
+  is the current update.  In analyze mode, the default file is merely </kbd>phenplast.dat</kbd>.
+  The output file contains the following: id, parent_id, phenotypic_varient_number, frequency, fitness, merit, 
+  gestation_time, and task counts for each phenotypic variant of each genotype.
+
   </p>
 </li>
-
-<li>
-  <strong><a name="DumpPopulation">DumpPopulation</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="PrintPopulationDistanceData">PrintPopulationDistanceData</a></strong>
+  <i>[string creature="START_CREATURE"] [string fname=""] [int save_genotypes=0]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintReactionData">PrintReactionData</a></strong>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="SavePopulation">SavePopulation</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="PrintReactionRewardData">PrintReactionRewardData</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintRelativeFitnessHistogram">PrintRelativeFitnessHistogram</a></strong>
+  <i>[filename] [fit_mode] [hist_min] [hist_step] [hist_max]</i>
+  </p>
   <p>
-  Save the genotypes and lots of statistics about the population to the
-  file specified; if not filename is given, use the name
-  <kbd>detail-<em>update</em>.pop</kbd>.  As with clones, the update number
-  allows a single event to produce many detail files.  The details are used
-  to collect crossection data about the population.
+      Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.
+    <br />This action will only work in run mode.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are values for the individual histogram bins.</kbd>
+
   </p>
 </li>
-<li>
-  <strong><a name="SaveSexPopulation">SaveSexPopulation</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
-  
+<li><p>
+  <strong><a name="PrintResourceData">PrintResourceData</a></strong>
+  </p>
   <p>
+    Print the current counts of each resource available to the population.  This uses
+  the environment configuration to determine what resources are in use.  Also creates
+  seperate files <kbd>resource_<em>resource_name</em>.m</kbd> (in a format that is
+  designed to be read into Matlab) for each spatial resource.
+
   </p>
 </li>
-<li>
-  <strong><a name="SaveParasitePopulation">SaveParasitePopulation</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="PrintSenseData">PrintSenseData</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintSenseExeData">PrintSenseExeData</a></strong>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="SaveHistoricPopulation">SaveHistoricPopulation</a></strong>
-  [<span class="cmdarg">int back_dist=-1</span>] [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="PrintSleepData">PrintSleepData</a></strong>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintSpeciesAbundanceHistogram">PrintSpeciesAbundanceHistogram</a></strong>
+  <i>[string fname="species_abundance_histogram.dat"]</i>
+  </p>
   <p>
-  This action is used to output all of the ancestors of the currently
-  living population to the file specified, or <kbd>historic-<em>update</em>.pop</kbd>.
+    Writes out a species abundance histogram.
+
   </p>
 </li>
-<li>
-  <strong><a name="SaveHistoricSexPopulation">SaveHistoricSexPopulation</a></strong>
-  [<span class="cmdarg">string fname=''</span>]
+<li><p>
+  <strong><a name="PrintStatsData">PrintStatsData</a></strong>
+  </p>
+  <p>
+    Print all of the miscellanous population statistics.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintTasksData">PrintTasksData</a></strong>
+  </p>
   <p>
+    Print the number of organisms that are able to perform each task.  This uses the
+  environment configuration to determine what tasks are in use.
+
   </p>
 </li>
-</ul>
+<li><p>
+  <strong><a name="PrintTasksExeData">PrintTasksExeData</a></strong>
+  </p>
+  <p>
+    Print number of times the particular task has been executed this update.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintTaskSnapshot">PrintTaskSnapshot</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
+    Run all organisms in the population through test cpus and print out the
+  number of tasks each can perform.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintTasksQualData">PrintTasksQualData</a></strong>
+  </p>
+  <p>
+    Print the total quality of each task.  By default a successful task is valued
+  as 1.0.  Some tasks, however, can grant partial values and/or special bonuses
+  via the quality value.
 
-<p>&nbsp;</p>
-<h2><a name="LandscapeActions">Landscape Analysis Actions</a></h2>
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintTimeData">PrintTimeData</a></strong>
+  </p>
+  <p>
+    Print all of the timing related statistics.
 
-<p>
-Landscape analysis actions perform various types mutation studies to
-calculate properties of the fitness landscape for a particular genome.
-When scheduled as an event during a run, these actions will typically
-perform analysis on the dominant genotype.  In analyze mode, analysis
-is performed on the entire currently selected batch.
-</p>
-<p>
-These actions are often very computationally intensive, thus will
-take a long time to compute.  In order to take advantage of increasingly
-available multi-processor/multi-core systems, a number of these actions
-have been enhanced to make use of multiple threads to parallize work.
-Set the configuration setting <code>MT_CONCURRENCY</code> to the number
-of logical processors available to make use of all processor resources
-for these compuations.
-</p>
-<ul>
-<li>
-  <strong><a name="AnalyzeLandscape">AnalyzeLandscape</a></strong>
-  [<span class="cmdarg">filename='land-analyze.dat'</span>] [<span class="cmdarg">int trials=1000</span>]
-  [<span class="cmdarg">int min_found=0</span>] [<span class="cmdarg">int max_trials=0</span>]
-  [<span class="cmdarg">int max_dist=10</span>]
-  
+  </p>
+</li>
+<li><p>
+  <strong><a name="PrintTotalsData">PrintTotalsData</a></strong>
+  </p>
   <p>
+    Print various totals for the entire length of the run (for example, the total number of
+  organisms ever).
+
   </p>
 </li>
-<li>
-  <strong><a name="PrecalcLandscape">PrecalcLandscape</a></strong>
-  
+<li><p>
+  <strong><a name="PrintTreeDepths">PrintTreeDepths</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Precalculate the distance 1 full landscape for the current batch in parallel
-  using multiple threads.  The resulting data is stored into the current batch
-  and can be used by many subsequent output commands within Analyze mode.
+    Reconstruction of phylogenetic trees.
+
   </p>
 </li>
-<li>
-  <strong><a name="FullLandscape">FullLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-full.dat'</span>] [<span class="cmdarg">int distance=1</span>]
-  [<span class="cmdarg">string entropy_file=''</span>] [<span class="cmdarg">string sitecount_file=''</span>]
-  
+<li><p>
+  <strong><a name="PrintVarianceData">PrintVarianceData</a></strong>
+  </p>
   <p>
-  Do a landscape analysis of the dominant genotype or current batch of genotypes,
-  depending on the current mode.  The resulting output is a collection of 
-  statistics obtained from examining all possible mutations at the distance
-  specified.  The default distance is one.
+    Print all of the variances of the average population statistics.
+
   </p>
 </li>
-<li>
-  <strong><a name="DeletionLandscape">DeletionLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-del.dat'</span>] [<span class="cmdarg">int distance=1</span>]
-  [<span class="cmdarg">string sitecount_file=''</span>]
+<li><p>
+  <strong><a name="PrintViableTasksData">PrintViableTasksData</a></strong>
+  <i>[string fname="viable_tasks.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SetVerbose">SetVerbose</a></strong>
+  <i>[string verbosity=""]</i>
+  </p>
   <p>
+    Change the level of output verbosity.  Verbose messages will print all
+  of the details of what is happening to the screen.  Minimal messages
+  will only briefly state the process being run.  Verbose messages are
+  recommended if you're in interactive analysis mode. When no arguments
+  are supplied, action will toggle between NORMAL and ON.
+  <br />Levels: SILENT, NORMAL, ON, DETAILS, DEBUG
+
   </p>
 </li>
-<li>
-  <strong><a name="InsertionLandscape">InsertionLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-ins.dat'</span>] [<span class="cmdarg">int distance=1</span>]
-  [<span class="cmdarg">string sitecount_file=''</span>]
+<li><p>
+  <strong><a name="task_snapshot">task_snapshot</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="test_dom">test_dom</a></strong>
+  <i>[string fname="dom-test.dat"]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PredictWLandscape">PredictWLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-predict.dat'</span>]
+<li><p>
+  <strong><a name="TestDominant">TestDominant</a></strong>
+  <i>[string fname="dom-test.dat"]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="VERBOSE">VERBOSE</a></strong>
+  <i>[string verbosity=""]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="PredictNuLandscape">PredictNuLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-predict.dat'</span>]
+</UL>
+<p>&nbsp;</p>
+<h2><a name="SaveLoadActions">Save Load Actions</a></h2>
+
+<p>
+</p>
+<UL>
+<li><p>
+  <strong><a name="detail_parasite_pop">detail_parasite_pop</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="detail_pop">detail_pop</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="RandomLandscape">RandomLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-random.dat'</span>] [<span class="cmdarg">int distance=1</span>]
-  [<span class="cmdarg">int trials=0</span>]
+<li><p>
+  <strong><a name="detail_sex_pop">detail_sex_pop</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="dump_historic_pop">dump_historic_pop</a></strong>
+  <i>[int back_dist=-1] [string fname=""]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="SampleLandscape">SampleLandscape</a></strong>
-  [<span class="cmdarg">string filename='land-sample.dat'</span>] [<span class="cmdarg">int trials=0</span>]
+<li><p>
+  <strong><a name="dump_historic_sex_pop">dump_historic_sex_pop</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="dump_pop">dump_pop</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-<li>
-  <strong><a name="HillClimb">HillClimb</a></strong>
-  [<span class="cmdarg">string filename='hillclimb.dat'</span>]
+<li><p>
+  <strong><a name="DumpPopulation">DumpPopulation</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="load_clone">load_clone</a></strong>
+  <i>&lt;cString fname&gt;</i>
+  </p>
   <p>
-  Does a hill climb with the dominant genotype.
+  
   </p>
 </li>
-<li>
-  <strong><a name="PairTestLandscape">PairTestLandscape</a></strong>
-  [<span class="cmdarg">string filename=''</span>] [<span class="cmdarg">int sample_size=0</span>]
+<li><p>
+  <strong><a name="load_dump_file">load_dump_file</a></strong>
+  <i>&lt;cString fname&gt; [int update=-1]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="LoadClone">LoadClone</a></strong>
+  <i>&lt;cString fname&gt;</i>
+  </p>
   <p>
-  If sample_size = 0, pairtest the full landscape.
+  
   </p>
 </li>
-<li>
-  <strong><a name="AnalyzePopulation">AnalyzePopulation</a></strong>
-  [<span class="cmdarg">double sample_prob=1</span>] [<span class="cmdarg">int landscape=0</span>]
-  [<span class="cmdarg">int save_genotype=0</span>] [<span class="cmdarg">string filename=''</span>]
+<li><p>
+  <strong><a name="LoadPopulation">LoadPopulation</a></strong>
+  <i>&lt;cString fname&gt; [int update=-1]</i>
+  </p>
+  <p>
+    Sets up a population based on a save file such as written out by
+  SavePopulation. It is also possible to append a history file to the
+  save file, in order to preserve the history of a previous run.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="save_clone">save_clone</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
+  
   </p>
 </li>
-</ul>
+<li><p>
+  <strong><a name="SaveClone">SaveClone</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
+    Save a clone of this organism to the file specified; if no filename is
+  given, use the name clone.<em>update</em>.  The update number allows regular
+  clones with distinct filenames to be saved with the same periodic event.
+  Running <kbd>avida -l filename</kbd> will start an Avida population with the
+  saved clone.  Note that a clone only consists of the genomes in
+  the population, and their current state is lost, so the run may not
+  proceed identically as to if it had continued as it was going.
 
+  </p>
+</li>
+<li><p>
+  <strong><a name="SaveHistoricPopulation">SaveHistoricPopulation</a></strong>
+  <i>[int back_dist=-1] [string fname=""]</i>
+  </p>
+  <p>
+    This action is used to output all of the ancestors of the currently
+  living population to the file specified, or <kbd>historic-<em>update</em>.pop</kbd>.
 
-
-<p>&nbsp;</p>
-<h2><a name="DriverActions">Driver Actions</a></h2>
-
-<p>
-These actions control the driver object responsible for executing the current run.
-</p>
-<ul>
-<li>
-  <strong><a name="Exit">Exit</a></strong>
+  </p>
+</li>
+<li><p>
+  <strong><a name="SaveHistoricSexPopulation">SaveHistoricSexPopulation</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
+  </p>
+</li>
+<li><p>
+  <strong><a name="SaveParasitePopulation">SaveParasitePopulation</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-  Unconditionally terminate the current run.
+  
   </p>
 </li>
-<li>
-  <strong><a name="ExitAveLineageLabelGreater">ExitAveLineageLabelGreater</a></strong>
-  &lt;<span class="cmdarg">double threshold</span>&gt;
-  
+<li><p>
+  <strong><a name="SavePopulation">SavePopulation</a></strong>
+  <i>[string fname=""]</i>
+  </p>
   <p>
-   Halts the run if the current average lineage label is larger
-   than <span class="cmdarg">threshold</span>.
+    Save the genotypes and lots of statistics about the population to the
+  file specified; if not filename is given, use the name
+  <kbd>detail-<em>update</em>.pop</kbd>.  As with clones, the update number
+  allows a single event to produce many detail files.  The details are used
+  to collect crossection data about the population.
+
   </p>
 </li>
-<li>
-  <strong><a name="ExitAveLineageLabelLess">ExitAveLineageLabelLess</a></strong>
-  &lt;<span class="cmdarg">double threshold</span>&gt;
+<li><p>
+  <strong><a name="SaveSexPopulation">SaveSexPopulation</a></strong>
+  <i>[string fname=""]</i>
+  </p>
+  <p>
   
-  <p>
-   Halts the run if the current average lineage label is smaller
-   than <span class="cmdarg">threshold</span>.
   </p>
 </li>
-</ul>
-
-
+</UL>
 <p>&nbsp;</p>
 <h2><a name="CreateAction">Creating an Action</a></h2>
 
@@ -1446,6 +2554,8 @@
 	<p>  To register our example action "MyAction", we'd write:<p>
 <p><pre>action_lib->Register&lt;cActionMyAction&gt;("MyAction");</pre><p>
 	<li><p>Test your action.</p></li>
+	<li><p>Add a ==== Action <i>action name</i> ==== line in
+               source/utils/make_actions_html/actions_source_info file</p></li>
 </ol>
 </p>
 

Modified: development/source/actions/PrintActions.cc
===================================================================
--- development/source/actions/PrintActions.cc	2008-02-18 15:39:30 UTC (rev 2340)
+++ development/source/actions/PrintActions.cc	2008-02-18 22:01:49 UTC (rev 2341)
@@ -699,7 +699,7 @@
  not in analyze mode.
  
  Parameters
-	filename (cString)
+  filename (cString)
  Where the clade information should be stored.
  
  Please note the structure to this file is not a matrix.
@@ -711,72 +711,72 @@
 class cActionPrintCCladeCounts : public cAction
 {
 private:
-		cString filename;
-		bool first_time;
-		
+    cString filename;
+    bool first_time;
+    
 public:
-			cActionPrintCCladeCounts(cWorld* world, const cString& args)
-			: cAction(world, args)
-		{
-				cString largs(args);
-				filename = (!largs.GetSize()) ? "cclade_count.dat" : largs.PopWord();
-				first_time = true;
-		}
-		
-		static const cString GetDescription() { return "Arguments: [filename = \"cclade_count.dat\"]"; }
-		
-		void Process(cAvidaContext& ctx)
-		{
-			//Handle possible errors
-			if (ctx.GetAnalyzeMode())
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeCount requires avida to be in run mode.");
-			
-			if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeCount requires coalescence clade tracking to be enabled.");
-			
-			
-			tHashTable<int, int> cclade_count;  //A count for each clade in the population
-			set<int>             clade_ids;
-			
-			cPopulation& pop = m_world->GetPopulation();
-			const int update = m_world->GetStats().GetUpdate();
-			
-			//For each organism in the population, find what coalescence clade it belongs to and count
-			for (int k = 0; k < pop.GetSize(); k++)
-			{
-				if (!pop.GetCell(k).IsOccupied())
-					continue;
-				int cclade_id = pop.GetCell(k).GetOrganism()->GetCCladeLabel();
-				int count = 0;
-				if (!cclade_count.Find(cclade_id,count))
-					clade_ids.insert(cclade_id);
-				cclade_count.SetValue(cclade_id, ++count);
-			}
-			
-			ofstream& fp = m_world->GetDataFileManager().GetOFStream(filename);
-			if (!fp.is_open())
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeCount: Unable to open output file.");
-			if (first_time)
-			{
-				fp << "# Each line is formatted as follows:" << endl;
-				fp << "#   update number_cclades ccladeID0 ccladeID0_count ccladeID1" << endl;
-				fp << endl;
-				first_time = false;
-			}
-			fp << update <<  " "
-				<< clade_ids.size() << " ";
-			
-			set<int>::iterator sit = clade_ids.begin();
-			while(sit != clade_ids.end())
-			{
-				int count = 0;
-				cclade_count.Find(*sit, count);
-				fp << *sit << " " << count << " ";
-				sit++;
-			}
-			fp << endl;
-			
-		}
+      cActionPrintCCladeCounts(cWorld* world, const cString& args)
+      : cAction(world, args)
+    {
+        cString largs(args);
+        filename = (!largs.GetSize()) ? "cclade_count.dat" : largs.PopWord();
+        first_time = true;
+    }
+    
+    static const cString GetDescription() { return "Arguments: [filename = \"cclade_count.dat\"]"; }
+    
+    void Process(cAvidaContext& ctx)
+    {
+      //Handle possible errors
+      if (ctx.GetAnalyzeMode())
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeCount requires avida to be in run mode.");
+      
+      if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeCount requires coalescence clade tracking to be enabled.");
+      
+      
+      tHashTable<int, int> cclade_count;  //A count for each clade in the population
+      set<int>             clade_ids;
+      
+      cPopulation& pop = m_world->GetPopulation();
+      const int update = m_world->GetStats().GetUpdate();
+      
+      //For each organism in the population, find what coalescence clade it belongs to and count
+      for (int k = 0; k < pop.GetSize(); k++)
+      {
+        if (!pop.GetCell(k).IsOccupied())
+          continue;
+        int cclade_id = pop.GetCell(k).GetOrganism()->GetCCladeLabel();
+        int count = 0;
+        if (!cclade_count.Find(cclade_id,count))
+          clade_ids.insert(cclade_id);
+        cclade_count.SetValue(cclade_id, ++count);
+      }
+      
+      ofstream& fp = m_world->GetDataFileManager().GetOFStream(filename);
+      if (!fp.is_open())
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeCount: Unable to open output file.");
+      if (first_time)
+      {
+        fp << "# Each line is formatted as follows:" << endl;
+        fp << "#   update number_cclades ccladeID0 ccladeID0_count ccladeID1" << endl;
+        fp << endl;
+        first_time = false;
+      }
+      fp << update <<  " "
+        << clade_ids.size() << " ";
+      
+      set<int>::iterator sit = clade_ids.begin();
+      while(sit != clade_ids.end())
+      {
+        int count = 0;
+        cclade_count.Find(*sit, count);
+        fp << *sit << " " << count << " ";
+        sit++;
+      }
+      fp << endl;
+      
+    }
 };
 
 
@@ -808,94 +808,94 @@
 class cActionPrintLogFitnessHistogram : public cAction
 {
 private:
-	
+  
   double m_hist_fmin;
   double m_hist_fstep;
-	double m_hist_fmax;
-	cString m_mode;
+  double m_hist_fmax;
+  cString m_mode;
   cString m_filename;
-	
+  
 public:
-		cActionPrintLogFitnessHistogram(cWorld* world, const cString& args)
+    cActionPrintLogFitnessHistogram(cWorld* world, const cString& args)
     : cAction(world, args)
-	{
-			cString largs(args);
-		  m_filename   = (largs.GetSize()) ? largs.PopWord()           : "fitness_log_hist.dat";
-			m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
-			m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): -3.0;
-			m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.5;
-			m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 12;
-	}
+  {
+      cString largs(args);
+      m_filename   = (largs.GetSize()) ? largs.PopWord()           : "fitness_log_hist.dat";
+      m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+      m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): -3.0;
+      m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.5;
+      m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 12;
+  }
   
   static const cString GetDescription() { return  "Parameters: <filename> <mode> <min> <step> <max>";}
   
-	//Given a min:step:max and bin number, return a string reprsenting the range of fitness values.
-	//This function may be called from other classes.
-	static cString GetHistogramBinLabel(int k, double min, double step, double max)
-	{
-		int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
-		cString retval; 
-		
-		if (k == 0)
-			retval = "Inviable";
-		else if (k == 1)
-			retval = cString("[<") + cStringUtil::Convert(min) + ", " + cStringUtil::Convert(min) + cString(")");
-		else if (k < num_bins - 1)
-			retval = cString("(") + cStringUtil::Convert(min+step*(k-2)) 
-				+ cString(", ") + cStringUtil::Convert(min+step*(k-1)) +
-				+ cString("]");
-		else
-			retval = cString("[>") + cStringUtil::Convert(max) + cString("]");
-		return retval;
-	}
-	
-		
-	//This function may get called by outside classes to generate a histogram of log10 fitnesses;
-	//max may be updated by this function if the range is not evenly divisible by the step
-	static tArray<int> MakeHistogram(const tArray<cOrganism*>& orgs, const tArray<cGenotype*>& gens, 
-																	 double min, double step, double& max, const cString& mode, cWorld* world,
-																	 cAvidaContext& ctx)
-	{
-		//Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
-		//If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
-		//All bins are [min, max)
+  //Given a min:step:max and bin number, return a string reprsenting the range of fitness values.
+  //This function may be called from other classes.
+  static cString GetHistogramBinLabel(int k, double min, double step, double max)
+  {
+    int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
+    cString retval; 
+    
+    if (k == 0)
+      retval = "Inviable";
+    else if (k == 1)
+      retval = cString("[<") + cStringUtil::Convert(min) + ", " + cStringUtil::Convert(min) + cString(")");
+    else if (k < num_bins - 1)
+      retval = cString("(") + cStringUtil::Convert(min+step*(k-2)) 
+        + cString(", ") + cStringUtil::Convert(min+step*(k-1)) +
+        + cString("]");
+    else
+      retval = cString("[>") + cStringUtil::Convert(max) + cString("]");
+    return retval;
+  }
+  
+    
+  //This function may get called by outside classes to generate a histogram of log10 fitnesses;
+  //max may be updated by this function if the range is not evenly divisible by the step
+  static tArray<int> MakeHistogram(const tArray<cOrganism*>& orgs, const tArray<cGenotype*>& gens, 
+                                   double min, double step, double& max, const cString& mode, cWorld* world,
+                                   cAvidaContext& ctx)
+  {
+    //Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
+    //If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
+    //All bins are [min, max)
     tArray<int> histogram;
-		int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
-		max  = min + (num_bins - 3) * step;
-		histogram.Resize(num_bins, 0);
-		cTestCPU* testcpu = world->GetHardwareManager().CreateTestCPU();
-		
-		
-		// We calculate the fitness based on the current merit,
-		// but with the true gestation time. Also, we set the fitness
-		// to zero if the creature is not viable.
-		tArray<cGenotype*>::const_iterator git;
-		tArray<cOrganism*>::const_iterator oit;
-		for (git = gens.begin(), oit = orgs.begin(); git != gens.end(); git++, oit++){
-			cCPUTestInfo test_info;
-			double fitness = 0.0;
-			if (mode == "TEST_CPU" || mode == "ACTUAL"){
+    int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
+    max  = min + (num_bins - 3) * step;
+    histogram.Resize(num_bins, 0);
+    cTestCPU* testcpu = world->GetHardwareManager().CreateTestCPU();
+    
+    
+    // We calculate the fitness based on the current merit,
+    // but with the true gestation time. Also, we set the fitness
+    // to zero if the creature is not viable.
+    tArray<cGenotype*>::const_iterator git;
+    tArray<cOrganism*>::const_iterator oit;
+    for (git = gens.begin(), oit = orgs.begin(); git != gens.end(); git++, oit++){
+      cCPUTestInfo test_info;
+      double fitness = 0.0;
+      if (mode == "TEST_CPU" || mode == "ACTUAL"){
         test_info.UseManualInputs( (*oit)->GetOrgInterface().GetInputs() );
-				testcpu->TestGenome(ctx, test_info, (*git)->GetGenome());
-			}
-			
-			if (mode == "TEST_CPU"){
-				fitness = test_info.GetColonyFitness();
-			}
-			else if (mode == "CURRENT"){
-				fitness = (*oit)->GetPhenotype().GetFitness();
-			}
-			else if (mode == "ACTUAL"){
-				fitness = (test_info.IsViable()) ? 
-				(*oit)->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0;
-			}
-			else
-				world->GetDriver().RaiseFatalException(1, "PrintLogFitnessHistogram::MakeHistogram: Invalid fitness mode requested.");
-	   
-			//Update the histogram
-			int update_bin = (fitness == 0) ? 0 :    
-				static_cast<int>((log10(fitness) - min) / step);
-			
+        testcpu->TestGenome(ctx, test_info, (*git)->GetGenome());
+      }
+      
+      if (mode == "TEST_CPU"){
+        fitness = test_info.GetColonyFitness();
+      }
+      else if (mode == "CURRENT"){
+        fitness = (*oit)->GetPhenotype().GetFitness();
+      }
+      else if (mode == "ACTUAL"){
+        fitness = (test_info.IsViable()) ? 
+        (*oit)->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0;
+      }
+      else
+        world->GetDriver().RaiseFatalException(1, "PrintLogFitnessHistogram::MakeHistogram: Invalid fitness mode requested.");
+     
+      //Update the histogram
+      int update_bin = (fitness == 0) ? 0 :    
+        static_cast<int>((log10(fitness) - min) / step);
+      
       // Bin 0   Inviable
       //     1   Below Range
       //     2   [min, min+step)
@@ -911,53 +911,53 @@
       else
         update_bin = static_cast<int>(log10(fitness) - min / step) + 2;
        
-			histogram[update_bin]++;
-		}
-		delete testcpu;
-		return histogram;
-	}
-	
+      histogram[update_bin]++;
+    }
+    delete testcpu;
+    return histogram;
+  }
+  
   void Process(cAvidaContext& ctx)
   {
-		//Verify input parameters
-		if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
-				 m_hist_fmin > m_hist_fmax)
-		{
-			cerr << "cActionPrintFitnessHistogram: Please check arguments.  Abort.\n";
-			cerr << "Parameters: " << m_filename << ", " << m_mode << ", " << m_hist_fmin << ":" << m_hist_fstep << ":" << m_hist_fmax << endl;
-			return;
-		}
+    //Verify input parameters
+    if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
+         m_hist_fmin > m_hist_fmax)
+    {
+      cerr << "cActionPrintFitnessHistogram: Please check arguments.  Abort.\n";
+      cerr << "Parameters: " << m_filename << ", " << m_mode << ", " << m_hist_fmin << ":" << m_hist_fstep << ":" << m_hist_fmax << endl;
+      return;
+    }
     cerr << "Parameters: " << m_filename << ", " << m_mode << ", " << m_hist_fmin << ":" << m_hist_fstep << ":" << m_hist_fmax << endl;
     
-		
-		//Gather data objects
+    
+    //Gather data objects
     cPopulation& pop        = m_world->GetPopulation();
     const int    update     = m_world->GetStats().GetUpdate();
     const double generation = m_world->GetStats().SumGeneration().Average();
-		tArray<cOrganism*> orgs;
-		tArray<cGenotype*> gens;
-		
+    tArray<cOrganism*> orgs;
+    tArray<cGenotype*> gens;
+    
     for (int i = 0; i < pop.GetSize(); i++)
-		{
+    {
       if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
       cOrganism* organism = pop.GetCell(i).GetOrganism();
       cGenotype* genotype = organism->GetGenotype();
-			orgs.Push(organism);
-			gens.Push(genotype);
-		}
-		
-		tArray<int> histogram = MakeHistogram(orgs, gens, m_hist_fmin, m_hist_fstep, m_hist_fmax, m_mode, m_world, ctx);
-		
-		
-		//Output histogram
-		cDataFile& hdf = m_world->GetDataFile(m_filename);
-		hdf.Write(update, "Update");
-		hdf.Write(generation, "Generation");
-		
-		for (int k = 0; k < histogram.GetSize(); k++)
-			hdf.Write(histogram[k], GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax));
-		hdf.Endl();
-	}
+      orgs.Push(organism);
+      gens.Push(genotype);
+    }
+    
+    tArray<int> histogram = MakeHistogram(orgs, gens, m_hist_fmin, m_hist_fstep, m_hist_fmax, m_mode, m_world, ctx);
+    
+    
+    //Output histogram
+    cDataFile& hdf = m_world->GetDataFile(m_filename);
+    hdf.Write(update, "Update");
+    hdf.Write(generation, "Generation");
+    
+    for (int k = 0; k < histogram.GetSize(); k++)
+      hdf.Write(histogram[k], GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax));
+    hdf.Endl();
+  }
 };
 
 
@@ -974,109 +974,109 @@
  MOVING THIS CLASS MAY BREAK DEPENDENCIES.
  
  Parameters:
- filename	(cString)				Name of the output file
- fit_mode (cString)				Either {Current, Actual, TestCPU}, where
-															 Current is the current value in the grid. [Default]
-															 Actual uses the current merit, but the true gestation time.
-															 that have reproduced.
-															 TestCPU determined.
+ filename  (cString)        Name of the output file
+ fit_mode (cString)        Either {Current, Actual, TestCPU}, where
+                               Current is the current value in the grid. [Default]
+                               Actual uses the current merit, but the true gestation time.
+                               that have reproduced.
+                               TestCPU determined.
  hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: 0.50]
  hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 0.02]
  hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 1.50]
  
  The file will be formatted:
-	<update>  [ <min, min, min+step, ..., max-step, max, >max], each bin [min,max)
+  <update>  [ <min, min, min+step, ..., max-step, max, >max], each bin [min,max)
 */
 class cActionPrintRelativeFitnessHistogram : public cAction
 {
 private:
-	double m_hist_fmin;
-	double m_hist_fstep;
-	double m_hist_fmax;
-	cString m_mode;
-	cString m_filename;
-	bool    first_run;
-	
+  double m_hist_fmin;
+  double m_hist_fstep;
+  double m_hist_fmax;
+  cString m_mode;
+  cString m_filename;
+  bool    first_run;
+  
 public:
-	cActionPrintRelativeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args) 
-	{ 
-		cString largs(args);
-		m_filename   = (largs.GetSize()) ? largs.PopWord()           : "rel_fitness_hist.dat";
-		m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
-		m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0;
-		m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.1;
-		m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 2;
-	}
-	
-	static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
-	
-	
-	static cString GetHistogramBinLabel(int k, double min, double step, double max)
-	{
-		int num_bins = static_cast<int>(ceil( (max - min) / step)) + 2;
-		cString retval; 
-		
-		if (k == 0)
-			retval = "Inviable";
-		else if (k == 1)
-			retval = cString("[<") + cStringUtil::Convert(min) + ", " + cStringUtil::Convert(min) + cString(")");
-		else if (k < num_bins - 1)
-			retval = cString("(") + cStringUtil::Convert(min+step*(k-2)) 
-				+ cString(", ") + cStringUtil::Convert(min+step*(k-1)) +
-				+ cString("]");
-		else
-			retval = cString("[>") + cStringUtil::Convert(max) + cString("]");
-		
-		return retval;
-	}
-	
-		static tArray<int> MakeHistogram(const tArray<cOrganism*>& orgs, const tArray<cGenotype*>& gens, 
-																		 double min, double step, double& max, const cString& mode, cWorld* world,
-																		 cAvidaContext& ctx)
-	{
-			//Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
-			//If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
-			//All bins are [min, max)
-			tArray<int> histogram;
-			int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
-			max  = min + (num_bins - 3) * step;
-			histogram.Resize(num_bins, 0);
-			cTestCPU* testcpu = world->GetHardwareManager().CreateTestCPU();
-			
-			
-			// We calculate the fitness based on the current merit,
-			// but with the true gestation time. Also, we set the fitness
-			// to zero if the creature is not viable.
-			tArray<cGenotype*>::const_iterator git;
-			tArray<cOrganism*>::const_iterator oit;
-			for (git = gens.begin(), oit = orgs.begin(); git != gens.end(); git++, oit++){
-				cCPUTestInfo test_info;
-				double fitness = 0.0;
-				double parent_fitness = ( (*git)->GetParentID() > 0) ? (*git)->GetParentGenotype()->GetFitness() : 1.0;
-				if (mode == "TEST_CPU" || mode == "ACTUAL"){
+  cActionPrintRelativeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args) 
+  { 
+    cString largs(args);
+    m_filename   = (largs.GetSize()) ? largs.PopWord()           : "rel_fitness_hist.dat";
+    m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+    m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0;
+    m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.1;
+    m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 2;
+  }
+  
+  static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
+  
+  
+  static cString GetHistogramBinLabel(int k, double min, double step, double max)
+  {
+    int num_bins = static_cast<int>(ceil( (max - min) / step)) + 2;
+    cString retval; 
+    
+    if (k == 0)
+      retval = "Inviable";
+    else if (k == 1)
+      retval = cString("[<") + cStringUtil::Convert(min) + ", " + cStringUtil::Convert(min) + cString(")");
+    else if (k < num_bins - 1)
+      retval = cString("(") + cStringUtil::Convert(min+step*(k-2)) 
+        + cString(", ") + cStringUtil::Convert(min+step*(k-1)) +
+        + cString("]");
+    else
+      retval = cString("[>") + cStringUtil::Convert(max) + cString("]");
+    
+    return retval;
+  }
+  
+    static tArray<int> MakeHistogram(const tArray<cOrganism*>& orgs, const tArray<cGenotype*>& gens, 
+                                     double min, double step, double& max, const cString& mode, cWorld* world,
+                                     cAvidaContext& ctx)
+  {
+      //Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
+      //If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
+      //All bins are [min, max)
+      tArray<int> histogram;
+      int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
+      max  = min + (num_bins - 3) * step;
+      histogram.Resize(num_bins, 0);
+      cTestCPU* testcpu = world->GetHardwareManager().CreateTestCPU();
+      
+      
+      // We calculate the fitness based on the current merit,
+      // but with the true gestation time. Also, we set the fitness
+      // to zero if the creature is not viable.
+      tArray<cGenotype*>::const_iterator git;
+      tArray<cOrganism*>::const_iterator oit;
+      for (git = gens.begin(), oit = orgs.begin(); git != gens.end(); git++, oit++){
+        cCPUTestInfo test_info;
+        double fitness = 0.0;
+        double parent_fitness = ( (*git)->GetParentID() > 0) ? (*git)->GetParentGenotype()->GetFitness() : 1.0;
+        if (mode == "TEST_CPU" || mode == "ACTUAL"){
           test_info.UseManualInputs( (*oit)->GetOrgInterface().GetInputs() );  
-					testcpu->TestGenome(ctx, test_info, (*git)->GetGenome());
-				}
-				
-				if (mode == "TEST_CPU"){
-					fitness = test_info.GetColonyFitness();
-				}
-				else if (mode == "CURRENT"){
-					fitness = (*oit)->GetPhenotype().GetFitness();
-				}
-				else if (mode == "ACTUAL"){
-					fitness = (test_info.IsViable()) ? 
-					(*oit)->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0;
-				}
-				else
-					world->GetDriver().RaiseFatalException(1, "MakeHistogram: Invalid fitness mode requested.");
-				
-				//Update the histogram
-				if (parent_fitness <= 0.0)
-					world->GetDriver().RaiseFatalException(1, cString("PrintRelativeFitness::MakeHistogram reports a parent fitness is zero.") + cStringUtil::Convert((*git)->GetParentID()) + cString(":") + cStringUtil::Convert( (*git)->GetParentGenotype()->GetMerit() ));
-				
+          testcpu->TestGenome(ctx, test_info, (*git)->GetGenome());
+        }
+        
+        if (mode == "TEST_CPU"){
+          fitness = test_info.GetColonyFitness();
+        }
+        else if (mode == "CURRENT"){
+          fitness = (*oit)->GetPhenotype().GetFitness();
+        }
+        else if (mode == "ACTUAL"){
+          fitness = (test_info.IsViable()) ? 
+          (*oit)->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0;
+        }
+        else
+          world->GetDriver().RaiseFatalException(1, "MakeHistogram: Invalid fitness mode requested.");
+        
+        //Update the histogram
+        if (parent_fitness <= 0.0)
+          world->GetDriver().RaiseFatalException(1, cString("PrintRelativeFitness::MakeHistogram reports a parent fitness is zero.") + cStringUtil::Convert((*git)->GetParentID()) + cString(":") + cStringUtil::Convert( (*git)->GetParentGenotype()->GetMerit() ));
+        
         int update_bin = 0;
-        double rfitness = fitness/parent_fitness;				
+        double rfitness = fitness/parent_fitness;        
         
         if (fitness == 0.0)
           update_bin = 0;
@@ -1086,49 +1086,49 @@
           update_bin = num_bins - 1;
         else
           update_bin = static_cast<int>( ((fitness/parent_fitness) - min) / step) + 2;
-				
-				histogram[update_bin]++;
-			}
-			delete testcpu;
-			return histogram;
-	}
-	
-	
-	
-	void Process(cAvidaContext& ctx)
-	{
-		//Handle possible errors
-		if (ctx.GetAnalyzeMode())
-			m_world->GetDriver().RaiseFatalException(1, "PrintRelativeFitnessHistogram requires avida to be in run mode.");
-	
-		//Gather data objects
-		cPopulation& pop        = m_world->GetPopulation();
-		const int    update     = m_world->GetStats().GetUpdate();
-		const double generation = m_world->GetStats().SumGeneration().Average();
-		tArray<cOrganism*> orgs;
-		tArray<cGenotype*> gens;
-		
-		for (int i = 0; i < pop.GetSize(); i++)
-		{
-			if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
-			cOrganism* organism = pop.GetCell(i).GetOrganism();
-			cGenotype* genotype = organism->GetGenotype();
-			orgs.Push(organism);
-			gens.Push(genotype);
-		}
-		
-		tArray<int> histogram = MakeHistogram(orgs, gens, m_hist_fmin, m_hist_fstep, m_hist_fmax, m_mode, m_world, ctx);
-		
-		
-		//Output histogram
-		cDataFile& hdf = m_world->GetDataFile(m_filename);
-		hdf.Write(update, "Update");
-		hdf.Write(generation, "Generation");
-		
-		for (int k = 0; k < histogram.GetSize(); k++)
-			hdf.Write(histogram[k], GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax));
-		hdf.Endl();
-	}
+        
+        histogram[update_bin]++;
+      }
+      delete testcpu;
+      return histogram;
+  }
+  
+  
+  
+  void Process(cAvidaContext& ctx)
+  {
+    //Handle possible errors
+    if (ctx.GetAnalyzeMode())
+      m_world->GetDriver().RaiseFatalException(1, "PrintRelativeFitnessHistogram requires avida to be in run mode.");
+  
+    //Gather data objects
+    cPopulation& pop        = m_world->GetPopulation();
+    const int    update     = m_world->GetStats().GetUpdate();
+    const double generation = m_world->GetStats().SumGeneration().Average();
+    tArray<cOrganism*> orgs;
+    tArray<cGenotype*> gens;
+    
+    for (int i = 0; i < pop.GetSize(); i++)
+    {
+      if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
+      cOrganism* organism = pop.GetCell(i).GetOrganism();
+      cGenotype* genotype = organism->GetGenotype();
+      orgs.Push(organism);
+      gens.Push(genotype);
+    }
+    
+    tArray<int> histogram = MakeHistogram(orgs, gens, m_hist_fmin, m_hist_fstep, m_hist_fmax, m_mode, m_world, ctx);
+    
+    
+    //Output histogram
+    cDataFile& hdf = m_world->GetDataFile(m_filename);
+    hdf.Write(update, "Update");
+    hdf.Write(generation, "Generation");
+    
+    for (int k = 0; k < histogram.GetSize(); k++)
+      hdf.Write(histogram[k], GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax));
+    hdf.Endl();
+  }
 };
 
 
@@ -1142,107 +1142,107 @@
  tagged clades.
  
  Parameters:
- filename	(cString)				Name of the output file
- fit_mode (cString)				Either {Current, Actual, TestCPU}, where
-																Current is the current value in the grid. [Default]
-																Actual uses the current merit, but the true gestation time.
-																TestCPU determined.
+ filename  (cString)        Name of the output file
+ fit_mode (cString)        Either {Current, Actual, TestCPU}, where
+                                Current is the current value in the grid. [Default]
+                                Actual uses the current merit, but the true gestation time.
+                                TestCPU determined.
  hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: -3]
  hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 12]
  hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 0.5]
 
  The file will be formatted:
-	<update> <cclade_count> <cclade_id> [...] <cclade_id> [...] ...
-	where [...] will be [ <min, min, min+step, ..., max-step, max, > max], each bin (min,max]
+  <update> <cclade_count> <cclade_id> [...] <cclade_id> [...] ...
+  where [...] will be [ <min, min, min+step, ..., max-step, max, > max], each bin (min,max]
  */
 class cActionPrintCCladeFitnessHistogram : public cAction
 {
-	private:
-		double m_hist_fmin;
-		double m_hist_fstep;
-		double m_hist_fmax;
-		cString m_mode;
-		cString m_filename;
-		bool    first_run;
-		
-	public:
-		cActionPrintCCladeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args)
-		{
-			cString largs(args);
-		  m_filename   = (largs.GetSize()) ? largs.PopWord()           : "cclade_fitness_hist.dat";
-			m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
-			m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): -3.0;
-			m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.5;
-			m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 12;
-			first_run = true; 
-		}
-		
-		static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
-		
-		void Process(cAvidaContext& ctx)
-		{
-			//Handle possible errors
-			if (ctx.GetAnalyzeMode())
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram requires avida to be in run mode.");
-			
-			if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram requires coalescence clade tracking to be enabled.");				
-			
-			//Verify input parameters
-			if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
-					 m_hist_fmin > m_hist_fmax)
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram: Check parameters.");
-			
-			//Gather data objects
-			cPopulation& pop        = m_world->GetPopulation();
-			const int    update     = m_world->GetStats().GetUpdate();
-			map< int, tArray<cOrganism*> > org_map;  //Map of ccladeID to array of organism IDs
-			map< int, tArray<cGenotype*> > gen_map;  //Map of ccladeID to array of genotype IDs 
-			
-			//Collect clade information
-			for (int i = 0; i < pop.GetSize(); i++){
-				if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
-				cOrganism* organism = pop.GetCell(i).GetOrganism();
-				cGenotype* genotype = organism->GetGenotype();
-				int cladeID = organism->GetCCladeLabel();
-				
-				map< int, tArray<cOrganism*> >::iterator oit = org_map.find(cladeID);
-				map< int, tArray<cGenotype*> >::iterator git = gen_map.find(cladeID);
-				if (oit == org_map.end()){ //The clade is new
-					org_map[cladeID] = tArray<cOrganism*>(1, organism);
-					gen_map[cladeID] = tArray<cGenotype*>(1, genotype);
-				}
-				else{  //The clade is known
-					oit->second.Push(organism);
-					git->second.Push(genotype);
-				}
-			}
-			
-			//Create and print the histograms; this calls a static method in another action
-			ofstream& fp = m_world->GetDataFileManager().GetOFStream(m_filename);
-			if (!fp.is_open())
-				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram: Unable to open output file.");
-			map< int, tArray<cOrganism*> >::iterator oit = org_map.begin();
-			map< int, tArray<cGenotype*> >::iterator git = gen_map.begin();
-			for(; oit != org_map.end(); oit++, git++){
-				tArray<int> hist = 
-					cActionPrintLogFitnessHistogram::MakeHistogram( (oit->second), (git->second),m_hist_fmin, m_hist_fstep, m_hist_fmax, m_mode, m_world, ctx );
-				if (first_run){  //Print header information if first time through
-					first_run = false;
-					fp << "# PrintCCladeFitnessHistogram" << endl << "# Bins: ";
-					for (int k = 0; k < hist.GetSize(); k++)
-						fp << " " <<  cActionPrintLogFitnessHistogram::GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax);
-					fp << endl << endl;
-				}
-				if (oit == org_map.begin()) //Print update and clade count if first clade
-					fp << update << " " << org_map.size() << " ";
-				fp << oit->first << " [";
-				for (int k = 0; k < hist.GetSize(); k++)
-					fp << " " << hist[k];
-				fp << " ] ";
-			}
+  private:
+    double m_hist_fmin;
+    double m_hist_fstep;
+    double m_hist_fmax;
+    cString m_mode;
+    cString m_filename;
+    bool    first_run;
+    
+  public:
+    cActionPrintCCladeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args)
+    {
+      cString largs(args);
+      m_filename   = (largs.GetSize()) ? largs.PopWord()           : "cclade_fitness_hist.dat";
+      m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+      m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): -3.0;
+      m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.5;
+      m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 12;
+      first_run = true; 
+    }
+    
+    static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
+    
+    void Process(cAvidaContext& ctx)
+    {
+      //Handle possible errors
+      if (ctx.GetAnalyzeMode())
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram requires avida to be in run mode.");
+      
+      if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram requires coalescence clade tracking to be enabled.");        
+      
+      //Verify input parameters
+      if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
+           m_hist_fmin > m_hist_fmax)
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram: Check parameters.");
+      
+      //Gather data objects
+      cPopulation& pop        = m_world->GetPopulation();
+      const int    update     = m_world->GetStats().GetUpdate();
+      map< int, tArray<cOrganism*> > org_map;  //Map of ccladeID to array of organism IDs
+      map< int, tArray<cGenotype*> > gen_map;  //Map of ccladeID to array of genotype IDs 
+      
+      //Collect clade information
+      for (int i = 0; i < pop.GetSize(); i++){
+        if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
+        cOrganism* organism = pop.GetCell(i).GetOrganism();
+        cGenotype* genotype = organism->GetGenotype();
+        int cladeID = organism->GetCCladeLabel();
+        
+        map< int, tArray<cOrganism*> >::iterator oit = org_map.find(cladeID);
+        map< int, tArray<cGenotype*> >::iterator git = gen_map.find(cladeID);
+        if (oit == org_map.end()){ //The clade is new
+          org_map[cladeID] = tArray<cOrganism*>(1, organism);
+          gen_map[cladeID] = tArray<cGenotype*>(1, genotype);
+        }
+        else{  //The clade is known
+          oit->second.Push(organism);
+          git->second.Push(genotype);
+        }
+      }
+      
+      //Create and print the histograms; this calls a static method in another action
+      ofstream& fp = m_world->GetDataFileManager().GetOFStream(m_filename);
+      if (!fp.is_open())
+        m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram: Unable to open output file.");
+      map< int, tArray<cOrganism*> >::iterator oit = org_map.begin();
+      map< int, tArray<cGenotype*> >::iterator git = gen_map.begin();
+      for(; oit != org_map.end(); oit++, git++){
+        tArray<int> hist = 
+          cActionPrintLogFitnessHistogram::MakeHistogram( (oit->second), (git->second),m_hist_fmin, m_hist_fstep, m_hist_fmax, m_mode, m_world, ctx );
+        if (first_run){  //Print header information if first time through
+          first_run = false;
+          fp << "# PrintCCladeFitnessHistogram" << endl << "# Bins: ";
+          for (int k = 0; k < hist.GetSize(); k++)
+            fp << " " <<  cActionPrintLogFitnessHistogram::GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax);
+          fp << endl << endl;
+        }
+        if (oit == org_map.begin()) //Print update and clade count if first clade
+          fp << update << " " << org_map.size() << " ";
+        fp << oit->first << " [";
+        for (int k = 0; k < hist.GetSize(); k++)
+          fp << " " << hist[k];
+        fp << " ] ";
+      }
       fp << endl;
-		}
+    }
 };
 
 
@@ -1256,111 +1256,111 @@
  clade members as compared to the parent.
  
  Parameters:
- filename	(cString)				Name of the output file
- fit_mode (cString)				Either {Current, Actual, ActualRepro, TestCPU}, where
-															 Current is the current value in the grid. [Default]
-															 Actual uses the current merit, but the true gestation time.
-															 CurrentRepro is the same as current, but counts only those orgs
-															 that have reproduced.
-															 TestCPU determined.
+ filename  (cString)        Name of the output file
+ fit_mode (cString)        Either {Current, Actual, ActualRepro, TestCPU}, where
+                               Current is the current value in the grid. [Default]
+                               Actual uses the current merit, but the true gestation time.
+                               CurrentRepro is the same as current, but counts only those orgs
+                               that have reproduced.
+                               TestCPU determined.
  hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: 0.50]
  hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 0.02]
  hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 1.50]
  
  The file will be formatted:
-	<update> <cclade_count> <cclade_id> [...] <cclade_id> [...] ...
-	where [...] will be [ <min, min, min+step, ..., max-step, max, >max], each bin [min,max}
+  <update> <cclade_count> <cclade_id> [...] <cclade_id> [...] ...
+  where [...] will be [ <min, min, min+step, ..., max-step, max, >max], each bin [min,max}
  */
 class cActionPrintCCladeRelativeFitnessHistogram : public cAction
 {
 private:
-	double m_hist_fmin;
+  double m_hist_fmin;
   double m_hist_fstep;
-	double m_hist_fmax;
-	cString m_mode;
+  double m_hist_fmax;
+  cString m_mode;
   cString m_filename;
-	bool first_run;
-		
+  bool first_run;
+    
 public:
-	cActionPrintCCladeRelativeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args) 
-	{
-		cString largs(args);
-		m_filename   = (largs.GetSize()) ? largs.PopWord()           : "cclade_rel_fitness_hist.dat";
-		m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
-		m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0;
-		m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.2;
-		m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 2.0;
-		first_run = true;
-	}
-	
-	static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
-	
-	void Process(cAvidaContext& ctx)
-	{
-		//Handle possible errors
-		if (ctx.GetAnalyzeMode())
-			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram requires avida to be in run mode.");
-		
-		if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
-			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram requires coalescence clade tracking to be enabled.");
-		
-		//Verify input parameters
-		if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
-				 m_hist_fmin > m_hist_fmax)
-			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitness: check parameters");
-		
-		///Gather data objects
-		cPopulation& pop        = m_world->GetPopulation();
-		const int    update     = m_world->GetStats().GetUpdate();
-		map< int, tArray<cOrganism*> > org_map;  //Map of ccladeID to array of organism IDs
-		map< int, tArray<cGenotype*> > gen_map;  //Map of ccladeID to array of genotype IDs 
-		
-		//Collect clade information
-		for (int i = 0; i < pop.GetSize(); i++){
-			if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
-			cOrganism* organism = pop.GetCell(i).GetOrganism();
-			cGenotype* genotype = organism->GetGenotype();
-			int cladeID = organism->GetCCladeLabel();
-			
-			map< int, tArray<cOrganism*> >::iterator oit = org_map.find(cladeID);
-			map< int, tArray<cGenotype*> >::iterator git = gen_map.find(cladeID);
-			if (oit == org_map.end()){ //The clade is new
-				org_map[cladeID] = tArray<cOrganism*>(1, organism);
-				gen_map[cladeID] = tArray<cGenotype*>(1, genotype);
-			}
-			else{  //The clade is known
-				oit->second.Push(organism);
-				git->second.Push(genotype);
-			}
-		}
-		
-		//Create and print the histograms; this calls a static method in another action
-		ofstream& fp = m_world->GetDataFileManager().GetOFStream(m_filename);
-		if (!fp.is_open())
-			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram: Unable to open output file.");
-		map< int, tArray<cOrganism*> >::iterator oit = org_map.begin();
-		map< int, tArray<cGenotype*> >::iterator git = gen_map.begin();
-		for(; oit != org_map.end(); oit++, git++){
-			tArray<int> hist = cActionPrintRelativeFitnessHistogram::MakeHistogram( (oit->second), (git->second),
-																																				 m_hist_fmin, m_hist_fstep, m_hist_fmax,
-																																				 m_mode, m_world, ctx );
-			if (first_run){  //Print header information if first time through
-				first_run = false;
-				fp << "# PrintCCladeFitnessHistogram" << endl << "# Bins: ";
-				for (int k = 0; k < hist.GetSize(); k++)
-					fp << " " <<  cActionPrintRelativeFitnessHistogram::GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax);
-				fp << endl << endl;
-			}
-			if (oit == org_map.begin()) //Print update and clade count if first clade
-				fp << update << " " << org_map.size() << " ";
-			fp << oit->first << " [";
-			for (int k = 0; k < hist.GetSize(); k++)
-				fp << " " << hist[k];
-			fp << " ] ";
-		}
+  cActionPrintCCladeRelativeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args) 
+  {
+    cString largs(args);
+    m_filename   = (largs.GetSize()) ? largs.PopWord()           : "cclade_rel_fitness_hist.dat";
+    m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+    m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0;
+    m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.2;
+    m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 2.0;
+    first_run = true;
+  }
+  
+  static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
+  
+  void Process(cAvidaContext& ctx)
+  {
+    //Handle possible errors
+    if (ctx.GetAnalyzeMode())
+      m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram requires avida to be in run mode.");
+    
+    if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
+      m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram requires coalescence clade tracking to be enabled.");
+    
+    //Verify input parameters
+    if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
+         m_hist_fmin > m_hist_fmax)
+      m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitness: check parameters");
+    
+    ///Gather data objects
+    cPopulation& pop        = m_world->GetPopulation();
+    const int    update     = m_world->GetStats().GetUpdate();
+    map< int, tArray<cOrganism*> > org_map;  //Map of ccladeID to array of organism IDs
+    map< int, tArray<cGenotype*> > gen_map;  //Map of ccladeID to array of genotype IDs 
+    
+    //Collect clade information
+    for (int i = 0; i < pop.GetSize(); i++){
+      if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
+      cOrganism* organism = pop.GetCell(i).GetOrganism();
+      cGenotype* genotype = organism->GetGenotype();
+      int cladeID = organism->GetCCladeLabel();
+      
+      map< int, tArray<cOrganism*> >::iterator oit = org_map.find(cladeID);
+      map< int, tArray<cGenotype*> >::iterator git = gen_map.find(cladeID);
+      if (oit == org_map.end()){ //The clade is new
+        org_map[cladeID] = tArray<cOrganism*>(1, organism);
+        gen_map[cladeID] = tArray<cGenotype*>(1, genotype);
+      }
+      else{  //The clade is known
+        oit->second.Push(organism);
+        git->second.Push(genotype);
+      }
+    }
+    
+    //Create and print the histograms; this calls a static method in another action
+    ofstream& fp = m_world->GetDataFileManager().GetOFStream(m_filename);
+    if (!fp.is_open())
+      m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram: Unable to open output file.");
+    map< int, tArray<cOrganism*> >::iterator oit = org_map.begin();
+    map< int, tArray<cGenotype*> >::iterator git = gen_map.begin();
+    for(; oit != org_map.end(); oit++, git++){
+      tArray<int> hist = cActionPrintRelativeFitnessHistogram::MakeHistogram( (oit->second), (git->second),
+                                                                         m_hist_fmin, m_hist_fstep, m_hist_fmax,
+                                                                         m_mode, m_world, ctx );
+      if (first_run){  //Print header information if first time through
+        first_run = false;
+        fp << "# PrintCCladeFitnessHistogram" << endl << "# Bins: ";
+        for (int k = 0; k < hist.GetSize(); k++)
+          fp << " " <<  cActionPrintRelativeFitnessHistogram::GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax);
+        fp << endl << endl;
+      }
+      if (oit == org_map.begin()) //Print update and clade count if first clade
+        fp << update << " " << org_map.size() << " ";
+      fp << oit->first << " [";
+      for (int k = 0; k < hist.GetSize(); k++)
+        fp << " " << hist[k];
+      fp << " ] ";
+    }
     fp << endl;
-		
-	}
+    
+  }
 };
 
 
@@ -1380,114 +1380,114 @@
 */
 class cActionPrintGenomicSiteEntropy : public cAction
 {
-	private:
-		cString m_filename;
-		bool    m_use_gap;
-	
-	public:
-		cActionPrintGenomicSiteEntropy(cWorld* world, const cString& args) : cAction(world, args){
-			cString largs = args;
-			m_filename = (largs.GetSize()) ? largs.PopWord() : "GenomicSiteEntropy.dat";
-		}
+  private:
+    cString m_filename;
+    bool    m_use_gap;
+  
+  public:
+    cActionPrintGenomicSiteEntropy(cWorld* world, const cString& args) : cAction(world, args){
+      cString largs = args;
+      m_filename = (largs.GetSize()) ? largs.PopWord() : "GenomicSiteEntropy.dat";
+    }
 
-		static const cString GetDescription() { return "Arguments: [filename = \"GenomicSiteEntropyData.datcd \"]";}
-		
-		void Process(cAvidaContext& ctx){
-			const int        num_insts  = m_world->GetNumInstructions();
-			tArray<cString> aligned;  //This will hold all of our aligned sequences
-			
-			if (ctx.GetAnalyzeMode()) //We're in analyze mode, so process the current batch
-			{
-				cAnalyze& analyze = m_world->GetAnalyze();  
-				if (!analyze.GetCurrentBatch().IsAligned()) analyze.AlignCurrentBatch(); //Let analyze take charge of aligning this batch
-				tListIterator<cAnalyzeGenotype> batch_it(m_world->GetAnalyze().GetCurrentBatch().List());
-				cAnalyzeGenotype* genotype = NULL;
-				while((genotype = batch_it.Next()))
-				{
-					aligned.Push(genotype->GetAlignedSequence());
-				}
-			}
-			else //We're not in analyze mode, process the population
-			{
-				cPopulation& pop = m_world->GetPopulation();
-				for (int i = 0; i < pop.GetSize(); i++)
-				{
-					if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
-					aligned.Push(pop.GetCell(i).GetOrganism()->GetGenome().AsString());
-				}
-				AlignStringArray(aligned);  //Align our population genomes
-			}
-			
-			//With all sequences aligned and stored, we can proceed to calculate per-site entropies
-			if (!aligned.GetSize())
-			{
-				m_world->GetDriver().NotifyComment("cActionPrintGenomicSiteEntropy: No sequences available.  Abort.");
-				return;
-			}
-			
-			const int gen_size = aligned[0].GetSize();
-			tArray<double> site_entropy(gen_size);
-			site_entropy.SetAll(0.0);
-			
-			tArray<int> inst_count( (m_use_gap) ? num_insts + 1 : num_insts);  //Add an extra place if we're using gaps
-			inst_count.SetAll(0);
-			for (int pos = 0; pos < gen_size; pos++)
-			{
-				inst_count.SetAll(0);  //Reset the counter for each aligned position
-				int total_count = 0;
-				for (int seq = 0; seq < aligned.GetSize(); seq++)
-				{
-					char ch = aligned[seq][pos];
-					if (ch == '_' && !m_use_gap) continue;                  //Skip gaps when applicable
-					else if (ch == '_') site_entropy[num_insts]++;          //Update gap count at end
-					else inst_count[ cInstruction::ConvertSymbol(ch) ]++;   //Update true instruction count
-					total_count++;
-				}
-				for (int c = 0; c < inst_count.GetSize(); c++)
-				{
-					double p = (inst_count[c] > 0) ? inst_count[c] / static_cast<double>(total_count) : 0.0;
-					site_entropy[pos] += (p > 0.0) ? - p * log(p) / log(static_cast<double>(inst_count.GetSize())) : 0.0;
-				}
-			}
-		}
-	
-	
-	private:
-		void AlignStringArray(tArray<cString>& unaligned)  //Taken from cAnalyze::CommandAnalyze
-		{
-			// Create an array of all the sequences we need to align.
-			const int num_sequences = unaligned.GetSize();
-			
-			// Move through each sequence an update it.
-			cString diff_info;
-			for (int i = 1; i < num_sequences; i++) {
-				// Track of the number of insertions and deletions to shift properly.
-				int num_ins = 0;
-				int num_del = 0;
-				
-				// Compare each string to the previous.
-				cStringUtil::EditDistance(unaligned[i], unaligned[i-1], diff_info, '_');
-				while (diff_info.GetSize() != 0) {
-					cString cur_mut = diff_info.Pop(',');
-					const char mut_type = cur_mut[0];
-					cur_mut.ClipFront(1); cur_mut.ClipEnd(1);
-					int position = cur_mut.AsInt();
-					if (mut_type == 'M') continue;   // Nothing to do with Mutations
-					
-					if (mut_type == 'I') {           // Handle insertions
-						for (int j = 0; j < i; j++)    // Loop back and insert an '_' into all previous sequences
-								unaligned[j].Insert('_', position + num_del);
-						num_ins++;
-					}
-					
-					else if (mut_type == 'D'){      // Handle Deletions
-						// Insert '_' into the current sequence at the point of deletions.
-						unaligned[i].Insert("_", position + num_ins);
-						num_del++;
-					}
-				}
-			}
-		}
+    static const cString GetDescription() { return "Arguments: [filename = \"GenomicSiteEntropyData.datcd \"]";}
+    
+    void Process(cAvidaContext& ctx){
+      const int        num_insts  = m_world->GetNumInstructions();
+      tArray<cString> aligned;  //This will hold all of our aligned sequences
+      
+      if (ctx.GetAnalyzeMode()) //We're in analyze mode, so process the current batch
+      {
+        cAnalyze& analyze = m_world->GetAnalyze();  
+        if (!analyze.GetCurrentBatch().IsAligned()) analyze.AlignCurrentBatch(); //Let analyze take charge of aligning this batch
+        tListIterator<cAnalyzeGenotype> batch_it(m_world->GetAnalyze().GetCurrentBatch().List());
+        cAnalyzeGenotype* genotype = NULL;
+        while((genotype = batch_it.Next()))
+        {
+          aligned.Push(genotype->GetAlignedSequence());
+        }
+      }
+      else //We're not in analyze mode, process the population
+      {
+        cPopulation& pop = m_world->GetPopulation();
+        for (int i = 0; i < pop.GetSize(); i++)
+        {
+          if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
+          aligned.Push(pop.GetCell(i).GetOrganism()->GetGenome().AsString());
+        }
+        AlignStringArray(aligned);  //Align our population genomes
+      }
+      
+      //With all sequences aligned and stored, we can proceed to calculate per-site entropies
+      if (!aligned.GetSize())
+      {
+        m_world->GetDriver().NotifyComment("cActionPrintGenomicSiteEntropy: No sequences available.  Abort.");
+        return;
+      }
+      
+      const int gen_size = aligned[0].GetSize();
+      tArray<double> site_entropy(gen_size);
+      site_entropy.SetAll(0.0);
+      
+      tArray<int> inst_count( (m_use_gap) ? num_insts + 1 : num_insts);  //Add an extra place if we're using gaps
+      inst_count.SetAll(0);
+      for (int pos = 0; pos < gen_size; pos++)
+      {
+        inst_count.SetAll(0);  //Reset the counter for each aligned position
+        int total_count = 0;
+        for (int seq = 0; seq < aligned.GetSize(); seq++)
+        {
+          char ch = aligned[seq][pos];
+          if (ch == '_' && !m_use_gap) continue;                  //Skip gaps when applicable
+          else if (ch == '_') site_entropy[num_insts]++;          //Update gap count at end
+          else inst_count[ cInstruction::ConvertSymbol(ch) ]++;   //Update true instruction count
+          total_count++;
+        }
+        for (int c = 0; c < inst_count.GetSize(); c++)
+        {
+          double p = (inst_count[c] > 0) ? inst_count[c] / static_cast<double>(total_count) : 0.0;
+          site_entropy[pos] += (p > 0.0) ? - p * log(p) / log(static_cast<double>(inst_count.GetSize())) : 0.0;
+        }
+      }
+    }
+  
+  
+  private:
+    void AlignStringArray(tArray<cString>& unaligned)  //Taken from cAnalyze::CommandAnalyze
+    {
+      // Create an array of all the sequences we need to align.
+      const int num_sequences = unaligned.GetSize();
+      
+      // Move through each sequence an update it.
+      cString diff_info;
+      for (int i = 1; i < num_sequences; i++) {
+        // Track of the number of insertions and deletions to shift properly.
+        int num_ins = 0;
+        int num_del = 0;
+        
+        // Compare each string to the previous.
+        cStringUtil::EditDistance(unaligned[i], unaligned[i-1], diff_info, '_');
+        while (diff_info.GetSize() != 0) {
+          cString cur_mut = diff_info.Pop(',');
+          const char mut_type = cur_mut[0];
+          cur_mut.ClipFront(1); cur_mut.ClipEnd(1);
+          int position = cur_mut.AsInt();
+          if (mut_type == 'M') continue;   // Nothing to do with Mutations
+          
+          if (mut_type == 'I') {           // Handle insertions
+            for (int j = 0; j < i; j++)    // Loop back and insert an '_' into all previous sequences
+                unaligned[j].Insert('_', position + num_del);
+            num_ins++;
+          }
+          
+          else if (mut_type == 'D'){      // Handle Deletions
+            // Insert '_' into the current sequence at the point of deletions.
+            unaligned[i].Insert("_", position + num_ins);
+            num_del++;
+          }
+        }
+      }
+    }
 };
 
 
@@ -1567,12 +1567,12 @@
         ofstream& fot = m_world->GetDataFileOFStream(this_path);
         PrintHeader(fot);
         tListIterator<cAnalyzeGenotype> batch_it(m_world->GetAnalyze().GetCurrentBatch().List());
-				cAnalyzeGenotype* genotype = NULL;
-				while((genotype = batch_it.Next())){
-					const cPhenPlastGenotype* ppgen = new cPhenPlastGenotype(genotype->GetGenome(), m_num_trials, m_world, ctx);
+        cAnalyzeGenotype* genotype = NULL;
+        while((genotype = batch_it.Next())){
+          const cPhenPlastGenotype* ppgen = new cPhenPlastGenotype(genotype->GetGenome(), m_num_trials, m_world, ctx);
           PrintPPG(fot, ppgen, genotype->GetID(), genotype->GetParentID());
           delete ppgen;
-				}
+        }
         m_world->GetDataFileManager().Remove(this_path);
       } else{  // Run mode
         cString this_path = m_filename + "-" + cStringUtil::Convert(m_world->GetStats().GetUpdate()) + ".dat";
@@ -2654,8 +2654,8 @@
   action_lib->Register<cActionPrintCCladeCounts>("PrintCCladeCounts");
   action_lib->Register<cActionPrintCCladeFitnessHistogram>("PrintCCladeFitnessHistogram");
   action_lib->Register<cActionPrintCCladeRelativeFitnessHistogram>("PrintCCladeRelativeFitnessHistogram");
-	
   
+  
   // Processed Data
   action_lib->Register<cActionPrintData>("PrintData");
   action_lib->Register<cActionPrintInstructionAbundanceHistogram>("PrintInstructionAbundanceHistogram");
@@ -2683,7 +2683,7 @@
   action_lib->Register<cActionPrintTreeDepths>("PrintTreeDepths");
   
   action_lib->Register<cActionPrintGenomicSiteEntropy>("PrintGenomicSiteEntropy");
-	
+  
   // Grid Information Dumps
   action_lib->Register<cActionDumpMemory>("DumpMemory");
   action_lib->Register<cActionDumpFitnessGrid>("DumpFitnessGrid");

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2008-02-18 15:39:30 UTC (rev 2340)
+++ development/source/main/cStats.cc	2008-02-18 22:01:49 UTC (rev 2341)
@@ -1010,6 +1010,7 @@
     df.WriteBlockElement(genotype_map[i],i,xsize);
   }
   df.WriteRaw("];");
+  df.Flush();
 }
 
 void cStats::PrintMarketData(const cString& filename)

Added: development/source/utils/make_actions_html/actions_source_info
===================================================================
--- development/source/utils/make_actions_html/actions_source_info	                        (rev 0)
+++ development/source/utils/make_actions_html/actions_source_info	2008-02-18 22:01:49 UTC (rev 2341)
@@ -0,0 +1,556 @@
+=== Action Exit ===
+  Unconditionally terminate the current run.
+=== Action ExitAveLineageLabelGreater ===
+   Halts the run if the current average lineage label is larger
+   than <span class="cmdarg">threshold</span>.
+=== Action ExitAveLineageLabelLess ===
+   Halts the run if the current average lineage label is smaller
+   than <span class="cmdarg">threshold</span>.
+=== Action PrintAverageData ===
+  [<span class="cmdarg">string filename='average.dat'</span>]
+  Print all of the population averages the specified file.
+=== Action PrintCCladeCounts ===
+    Print a count of the number of oraganisms belonging to a each coalescence clade currently in the population.
+    <br />This action will only work in run mode.
+    <br />This action will require TRACK_CCLADE to be enabled.
+=== Action PrintCCladeFitnessHistogram ===
+    Print a histogram of fitnesses for each coalescence clade in the population.
+    <br />This action will only work in run mode.
+    <br />This action will rerequire TRACK_CCLADE to be enabled.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are log10 values for the individual histogram bins.</kbd>
+=== Action PrintCCladeRelativeFitnessHistogram ===
+    Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.
+    <br />This action will only work in run mode.
+    <br />This action will rerequire TRACK_CCLADE to be enabled.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are values for the individual histogram bins.</kbd>
+=== Action PrintCompetitionData ===
+  Print out CompeteOrganism statistics. Make the first call after the first set of trials has been completed to get a complete header.
+=== Action PrintErrorData ===
+  Print all of the standard errors of the average population statistics.
+=== Action PrintVarianceData ===
+  Print all of the variances of the average population statistics.
+=== Action PrintDominantData ===
+  Print all of the statistics relating to the dominant genotype.
+=== Action PrintStatsData ===
+  Print all of the miscellanous population statistics.
+=== Action PrintCountData ===
+  Print all of the statistics the keep track of counts (such as the number of organisms
+  in the population or the number of instructions executed).
+=== Action PrintTotalsData ===
+  Print various totals for the entire length of the run (for example, the total number of
+  organisms ever).
+=== Action PrintTasksData ===
+  Print the number of organisms that are able to perform each task.  This uses the
+  environment configuration to determine what tasks are in use.
+=== Action PrintTasksExeData ===
+  Print number of times the particular task has been executed this update.
+=== Action PrintTasksQualData ===
+  Print the total quality of each task.  By default a successful task is valued
+  as 1.0.  Some tasks, however, can grant partial values and/or special bonuses
+  via the quality value.
+=== Action PrintResourceData ===
+  Print the current counts of each resource available to the population.  This uses
+  the environment configuration to determine what resources are in use.  Also creates
+  seperate files <kbd>resource_<em>resource_name</em>.m</kbd> (in a format that is
+  designed to be read into Matlab) for each spatial resource.
+=== Action PrintTimeData ===
+  Print all of the timing related statistics.
+=== Action PrintMutationRateData ===
+  Output (regular and log) statistics about individual copy mutation rates
+  (aver, stdev, skew, cur). Useful only when mutation rate is set per organism.
+=== Action PrintDivideMutData ===
+  Output (regular and log) statistics about individual, per site, rates divide mutation
+  rates (aver, stdev, skew, cur) to divide_mut.dat. Use with multiple divide instuction set.
+=== Action PrintDominantParaData ===
+  Print various quantites related to the dominant parasite.
+=== Action PrintInstructionData ===
+  Print the by-organisms counts of what instructions they _successfully_ executed
+  beteween birth and divide. Prior to their first divide, organisms values for their parents.
+=== Action PrintGenotypeMap ===
+  This event is used to output a map of the genotype IDs for the
+  population grid to a file that is suitable to be read into Matlab.
+=== Action PrintPhenotypeData ===
+  [<span class="cmdarg">string filename='phenotype_count.dat'</span>]
+  Print the number of phenotypes based on tasks executed this update.  Executing
+  a task any number of times is considered the same as executing it once. 
+=== Action PrintPhenotypeStatus ===
+=== Action PrintDemeStats ===
+=== Action PrintData ===
+  Append to the file specified (continuous output), the data given in the
+  column list.  The column list needs to be a comma-seperated list of
+  keywords representing the data types.  Many possible data types can be
+  output; see the <a href="print_data.html">complete listing</a> for details.
+  Note that this event will even create a detailed column legend at the top
+  of your file so you don't need to seperately keep track of what the
+  columns mean.
+=== Action PrintInstructionAbundanceHistogram ===
+  Appends a line containing the bulk count (abundance) of each instruction
+  in the population onto a file.
+=== Action PrintDepthHistogram ===
+=== Action Echo ===
+  Print the supplied message to standard output.
+=== Action PrintGenotypeAbundanceHistogram ===
+  Writes out a genotype abundance histogram.
+=== Action PrintSpeciesAbundanceHistogram ===
+  Writes out a species abundance histogram.
+=== Action PrintLineageTotals ===
+=== Action PrintLineageCounts ===
+=== Action PrintDominantGenotype ===
+  Print the dominant organism's genome (and lots of information about it)
+  into the file specified.  If no filename is given, the genotype's assigned name
+  is used and the file is placed into the archive subdirectory.
+=== Action PrintDominantParasiteGenotype ===
+  Print the dominant parasite's genome (and lots of information about it)
+  into the file specified.  If no filename is given, the parasite's assigned name
+  is used and the file is placed into the archive subdirectory.
+=== Action PrintDetailedFitnessData ===
+=== Action PrintLogFitnessHistogram ===
+    Print a histogram of organism fitnesses in the current population.
+    <br />This action will only work in run mode.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are log10 values for the individual histogram bins.</kbd>
+=== Action PrintRelativeFitnessHistogram ===
+    Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.
+    <br />This action will only work in run mode.
+    <br/>
+    <kbd>mode</kbd> may be {<kbd>CURRENT, ACTUAL, TESTCPU</kbd>}, where
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>CURRENT</kbd> uses the current phenotype value of fitness</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>ACTUAL</kbd> uses the current merit and the true gestation time (via test cpu calculation)</li>
+      <br/>&nbsp; &nbsp; &nbsp;<kbd>TESTCPU</kbd> uses the test cpu measurement.</li>
+      <br />
+    <kbd>lower_bound, step, upper_bound</kbd> are values for the individual histogram bins.</kbd>
+=== Action PrintGenomicSiteEntropy ===
+   This function will take the initial genotype for each organism in the
+   population/batch, align them, and calculate the per-site entropy of the
+   aligned sequences.  Please note that there may be a variable number
+   of columns in each line if the runs are not fixed length.  The site
+   entropy will be measured in mers, normalized by the instruction set size.
+   This is a population/batch measure of entropy, not a mutation-selection balance
+   measure.  
+=== Action PrintPhenotypicPlasticity ===
+  This function will provided detailed information about the phenotypic varients
+  of the current population/batch by running each genome through a test cpu <kbd>num_trials</kbd> times.
+  If this command is executed in run mode, the
+  <kbd>filename</kbd> will be appeneded with <kbd>-Update.dat</kbd> where <kbd>Update</kbd>
+  is the current update.  In analyze mode, the default file is merely </kbd>phenplast.dat</kbd>.
+  The output file contains the following: id, parent_id, phenotypic_varient_number, frequency, fitness, merit, 
+  gestation_time, and task counts for each phenotypic variant of each genotype.
+=== Action PrintGeneticDistanceData ===
+=== Action PrintPopulationDistanceData ===
+=== Action PrintDebug ===
+=== Action PrintGenotypes ===
+  This command is used to print out information about all of the genotypes
+  in the population.  The file output from here can be read
+  back into the analyze mode of Avida with the <code>LOAD</code> command.
+  </p>
+  <p>
+  The <span class="cmdarg">data_fields</span> parameter indicates what
+  columns should be included in the file, which must be comma seperated.
+  Options are:
+  <em>all, id, parent_id, parent2_id (for sex), parent_dist, num_cpus,
+  total_cpus, length, merit, gest_time, fitness, update_born, update_dead,
+  depth, lineage, sequence.</em>
+  Use <em>all</em> (the default) if you want all of the fields included.
+  </p>
+  <p>
+  The <span class="cmdarg">print_historic</span> parameter indicates how
+  many updates back in time should be included in this output.  For example,
+  '200' would indicate that any ancestor of the current population that died
+  out in the last 200 updates should also be printed. A '-1' in this field
+  indicates that all ancestors should be printed.
+  </p>
+  <p>
+  The <span class="cmdarg">filename</span> parameter simply indicates what
+  you want to call the file.
+  </p>
+  <p>
+  <em>Example</em>:
+  <br />&nbsp;&nbsp;<kbd>u 1000:1000 print_genotypes id,parent_id,fitness 1000</kbd>
+  <br />This will print out the full population every 1000 updates, including all
+  genotypes that have died out since the last time it was printed.
+=== Action TestDominant ===
+=== Action PrintTaskSnapshot ===
+  Run all organisms in the population through test cpus and print out the
+  number of tasks each can perform.
+=== Action PrintViableTasksData ===
+=== Action PrintTreeDepths ===
+  Reconstruction of phylogenetic trees.
+=== Action DumpMemory ===
+  Dump memory summary information.
+=== Action DumpFitnessGrid ===
+  Print out the grid of organism fitness values.
+=== Action DumpGenotypeIDGrid ===
+  Print out the grid of genotype IDs.
+=== Action DumpTaskGrid ===
+  Print out the grid of takss that organisms do. For each organism, tasks are first 
+  encoded as a binary string (e.g. 100000001 means that organism is doing NOT and EQU
+  and then reported as a base-10 number (257 in the example above).
+=== Action DumpDonorGrid ===
+  Print out the grid of organisms who donated their merit.
+=== Action DumpRecieverGrid ===
+  Print out the grid of organisms who received merit.
+=== Action SetVerbose ===
+  Change the level of output verbosity.  Verbose messages will print all
+  of the details of what is happening to the screen.  Minimal messages
+  will only briefly state the process being run.  Verbose messages are
+  recommended if you're in interactive analysis mode. When no arguments
+  are supplied, action will toggle between NORMAL and ON.
+  <br />Levels: SILENT, NORMAL, ON, DETAILS, DEBUG
+=== Action Inject ===
+  Inject a single organisms into the population.  Arguments must be
+  included from left to right; if all arguments are left out, the default
+  creature is the ancestral organism, and it will be injected into cell 0,
+  have an uninitialized merit, and be marked as liniage id 0.
+=== Action InjectRandom ===
+  Injects a randomly generated genome of the supplied length into the population.
+=== Action InjectAll ===
+  Same as Inject, but no cell_id is specified and the organism is placed
+  into <em>all</em> cells in the population.
+=== Action InjectRange ===
+  Injects identical organisms into a range of cells of the population.
+  </p>
+  <p>
+  <em>Example</em>:
+  <br /><code>InjectRange 000-aaaaa.org 0 10</code>
+  <br />Will inject 10 organisms into cells 0 through 9.
+=== Action InjectSequence ===
+  Injects identical organisms based on the supplied genome sequence into
+  a range of cells of the population.
+  </p>
+  <p>
+  <em>Example</em>:
+  <br /><code>InjectSequence ckdfhgklsahnfsaggdsgajfg 0 10 100</code>
+  <br />Will inject 10 organisms into cells 0 through 9 with a merit of 100.
+=== Action InjectParasite ===
+  Attempt to inject a parasite genome into the supplied population cell
+  range with the specified label.
+=== Action InjectParasitePair ===
+  Inject host parasite pairs into the population cell range specified. 
+=== Action KillProb ===
+  Using the specified probability, test each organism to see if it is killed off.
+=== Action KillRate ===
+  Randomly removes a certain proportion of the population.
+  In principle, this action does the same thing as the KillProb event.
+  However, instead of a probability, here one has to specify a rate. The
+  rate has the same unit as fitness. So if the average fitness is 20000,
+  than you remove 50% of the population on every update with a removal rate
+  of 10000.
+=== Action KillRectangle ===
+  Kill off all organisms in a rectangle defined by the points (x1, y1) and (x2, y2).
+=== Action SerialTransfer ===
+  Similar to KillProb, but we specify the exact number of organisms to
+  keep alive after the event.  The <span class="cmdarg">ignore_deads</span>
+  argument determines whether only living organisms are retainted.
+=== Action SetMutProb ===
+=== Action ModMutProb ===
+=== Action ZeroMuts ===
+  This event will set all mutation rates to zero.
+=== Action CompeteDemes ===
+=== Action ResetDemes ===
+=== Action CopyDeme ===
+=== Action SeverGridCol ===
+  Remove the connections between cells along a column in an Avida grid.
+=== Action SeverGridRow ===
+  Remove the connections between cells along a row in an Avida grid.
+=== Action JoinGridCol ===
+  Add connections between cells along a column in an Avida grid.
+=== Action JoinGridRow ===
+  Add connections between cells along a row in an Avida grid.
+=== Action ConnectCells ===
+  Connects a pair of specified cells.
+=== Action DisconnectCells ===
+  Disconnects a pair of specified cells.
+=== Action NewTrial ===
+  Immediately calculates the fitness of each organism in the population, saves this value for use with the CompeteOrganisms
+  event, and resets the state of all organisms.
+=== Action CompeteOrganisms ===
+  Calculates fitness of each organism in the population and creates a new population of descendants
+  where each organism has a chance of replication proportional to its fitness. Can be used to make Avida 
+  operate without population dynamics and asynchronous replication, i.e. like a genetic algorithm. If NewTrial 
+  events have occurred since the last CompeteOrganisms event, then the average fitness over those trials 
+  will be used.
+  </p>
+ 
+  <code>competition_type</code> controls how the fitnesses of multiple trials determine the overall fitness
+  used for the competition: 0=geometric mean of fitnesses, 1=scaled geometric mean of fitnesses (the greatest fitness
+  of each trial is scaled to 1.0 before taking the geometric mean), 2=arithmetic mean, 3=geometric mean plus 
+  rescales effective fitness values by the geometric mean of the difference from the top score and the median.
+ <p>Setting <code>parents_survive</code> to 1, causes the first copy of an organism that makes it into the new 
+  population to be the original (unmutated) parent organism.
+=== Action AnalyzeLandscape ===
+=== Action PrecalcLandscape ===
+  Precalculate the distance 1 full landscape for the current batch in parallel
+  using multiple threads.  The resulting data is stored into the current batch
+  and can be used by many subsequent output commands within Analyze mode.
+=== Action FullLandscape ===
+  Do a landscape analysis of the dominant genotype or current batch of genotypes,
+  depending on the current mode.  The resulting output is a collection of 
+  statistics obtained from examining all possible mutations at the distance
+  specified.  The default distance is one.
+=== Action DeletionLandscape ===
+=== Action InsertionLandscape ===
+=== Action PredictWLandscape ===
+=== Action PredictNuLandscape ===
+=== Action RandomLandscape ===
+=== Action SampleLandscape ===
+=== Action HillClimb ===
+  Does a hill climb with the dominant genotype.
+=== Action PairTestLandscape ===
+  If sample_size = 0, pairtest the full landscape.
+=== Action AnalyzePopulation ===
+=== Action SaveClone ===
+  Save a clone of this organism to the file specified; if no filename is
+  given, use the name clone.<em>update</em>.  The update number allows regular
+  clones with distinct filenames to be saved with the same periodic event.
+  Running <kbd>avida -l filename</kbd> will start an Avida population with the
+  saved clone.  Note that a clone only consists of the genomes in
+  the population, and their current state is lost, so the run may not
+  proceed identically as to if it had continued as it was going.
+=== Action LoadClone ===
+=== Action LoadPopulation ===
+  Sets up a population based on a save file such as written out by
+  SavePopulation. It is also possible to append a history file to the
+  save file, in order to preserve the history of a previous run.
+=== Action DumpPopulation ===
+=== Action SavePopulation ===
+  Save the genotypes and lots of statistics about the population to the
+  file specified; if not filename is given, use the name
+  <kbd>detail-<em>update</em>.pop</kbd>.  As with clones, the update number
+  allows a single event to produce many detail files.  The details are used
+  to collect crossection data about the population.
+=== Action SaveSexPopulation ===
+=== Action SaveParasitePopulation ===
+=== Action SaveHistoricPopulation ===
+  This action is used to output all of the ancestors of the currently
+  living population to the file specified, or <kbd>historic-<em>update</em>.pop</kbd>.
+=== Action SaveHistoricSexPopulation ===
+=== Action InjectResource ===
+  Inject (add) a specified amount of a specified resource. 
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+=== Action InjectScaledResource ===
+=== Action OutflowScaledResource ===
+=== Action SetEnvironmentInputs ===
+  Set the inputs that all organisms get from the environment when doing IO to these specific values. There must 
+  be exactly three inputs, and they must have the usual values for the top 8 "key" bits, i.e. they must be of the form
+  0x0F?????? 0x33?????? 0x55?????? where ? can be replaced with any hexadecimal digit.
+=== Action SetResource ===
+  Set the resource amount to a specific level.
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+=== Action SetResourceInflow ===
+  Set the resource inflow to a specific level.
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+=== Action SetResourceOutflow ===
+  Set the resource outflow to a specific level.
+  <span class="cmdarg">res_name</span> must already exist as
+  a resource in environment file.
+=== Action SetReactionValue ===
+  Set the reaction value to a specific level.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+  <span class="cmdarg">value</span> can be negative. 
+=== Action SetReactionMinTaskCount ===
+  Set the min task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+=== Action SetReactionMaxTaskCount ===
+  Set the max task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+=== Action SetReactionValueMult ===
+  Multiply the reaction value by the <span class="cmdarg">value</span>.
+  <span class="cmdarg">reaction_name</span> must already 
+  exist in the environment file.
+  <span class="cmdarg">value</span> can be negative. 
+=== Action SetReactionInst ===
+  Set the instruction triggered by this reaction.
+  <span class="cmdarg">reaction_name</span> must already
+  exist in the environment file.
+  <span class="cmdarg">inst</span> must be in the instruction set. 
+=== head ===
+<html>
+<!-- This HTML was generated by the make_actions_html routine please modify --->
+<!-- the source/utils/make_actions_html/actions_source_info file            --->
+<head>
+  <title>Avida : List of Actions</title>
+	<link rel="stylesheet" type="text/css" href="main.css" />
+</head>
+<body>
+
+<div class="revision">
+Revised 2006-09-03 DMB
+xxxx-xx-xx # this line will be replaced by make_actions_html.pl
+</div>
+
+<p>
+<a href="index.html">Return to the Index</a> &nbsp;|&nbsp;
+<a href="events.html">The Events File</a> &nbsp;|&nbsp;
+<a href="analyze.html">The Analyze File</a>
+</p>
+<hr />
+
+<div align="center">
+<h1>List of Actions</h1>
+</div>
+
+<a name="ActionCategories"><h2>Action Categories</h2></a>
+<p>
+There is a large library of actions available for scheduling as events.
+Additionally, all of these actions can be used within analyze scripts.
+Below you will find a listing of the high level groupings of these
+actions, along with detailed sections for each them.
+</p>
+
+
+<dl>
+<dt><a href="#PrintActions">Print</a></dt>
+<dd>Print actions are the primary way of saving data from an Avida experiments.</dd>
+<dt><a href="#PopulationActions">Population</a></dt>
+<dd>Population actions modify the state of the population, and will actually change the course of the run.</dd>
+<dt><a href="#EnvironmentActions">Environment</a></dt>
+<dd>Actions that allow user to change properties of the environment, including resources.</dd>
+<dt><a href="#SaveLoadActions">Save and Load</a></dt>
+<dd>Actions that allow for saving and loading large data sets, such as full populations.</dd>
+<dt><a href="#LandscapeActions">Landscape Analysis</a></dt>
+<dd>Actions that use data from the current state of Avida, process it and then output the results.</dd>
+<dt><a href="#DriverActions">Driver</a></dt>
+<dd>Actions that allow user to control program execution, including experiment termination.</dd>
+</dl>
+
+<p>
+For a brief overview of writing a new action, please see <a href="#CreateAction">Creating an Action</a> below.
+</p>
+
+<p>&nbsp;</p>
+<h2>Alphabetical Listing of Available Actions</h2>
+
+=== Section Print Actions ===
+<p>&nbsp;</p>
+<h2><a name="PrintActions">Print Actions</a></h2>
+
+<p>
+Output events are the primary way of saving data from an Avida experiments.
+The main two types are <em>continuous output</em>, which append to a single file 
+every time the event is trigged, and <em>singular output</em>, which produce
+a single, complete file for each trigger.
+</p>
+=== Section Population Actions ===
+<p>&nbsp;</p>
+<h2><a name="PopulationActions">Population Actions</a></h2>
+
+<p>
+Population events modify the state of the population, and will actually
+change the course of the run.  There are a wide variety of these.
+</p>
+=== Section Environment Actions ===
+<p>&nbsp;</p>
+<h2><a name="EnvironmentActions">Environment Actions</a></h2>
+
+<p>
+Events that allow user to change environment properties, such as resources
+and reaction parameters.
+</p>
+=== Section Save Load Actions ===
+<p>&nbsp;</p>
+<h2><a name="SaveLoadActions">Save Load Actions</a></h2>
+
+<p>
+</p>
+=== Section Landscape Actions ===
+<p>&nbsp;</p>
+<h2><a name="LandscapeActions">Landscape Analysis Actions</a></h2>
+
+<p>
+Landscape analysis actions perform various types mutation studies to
+calculate properties of the fitness landscape for a particular genome.
+When scheduled as an event during a run, these actions will typically
+perform analysis on the dominant genotype.  In analyze mode, analysis
+is performed on the entire currently selected batch.
+</p>
+<p>
+These actions are often very computationally intensive, thus will
+take a long time to compute.  In order to take advantage of increasingly
+available multi-processor/multi-core systems, a number of these actions
+have been enhanced to make use of multiple threads to parallize work.
+Set the configuration setting <code>MT_CONCURRENCY</code> to the number
+of logical processors available to make use of all processor resources
+for these compuations.
+</p>
+=== Section Driver Actions ===
+<p>&nbsp;</p>
+<h2><a name="DriverActions">Driver Actions</a></h2>
+
+<p>
+These actions control the driver object responsible for executing the current run.
+</p>
+=== tail ===
+<p>&nbsp;</p>
+<h2><a name="CreateAction">Creating an Action</a></h2>
+
+<p>
+The action source code is contained in the source/action directory.  
+Each of the individual <a href="#ActionCategories">action categories</a> has its own source code files (e.g. Landcape Actions are located in the LandscapeActions files).
+</p>
+<p>Each action is derrived from the cAction class.  Briefly, to get an action to work you must create a child class that has a Process and GetDescription function defined as well as a constructor.  You must also register this new class with the action library.</p>
+<p>So, with that quick review of what must be done, here is a step by step guide to creating an action:
+<ol>
+	<li>Identify which of the action categories your action should be assigned to.  There are six different action categories described <a href="#ActionCategories">above</a>.  Each category has a similar means of creating a new action, but do note that some action commands are generated via macros defined at the top of the files.  For instance, in the PrintActions file, you will notice a number of STATS_OUT_FILE macros being used to generate rather repetitively coded standard output files.&nbsp;</p></li>
+	<li><p>Create a new class in the file that follows proper naming conventions.  Any class should begin with "cAction" and be followed by the name of the action command you will register with the library.  For instance, if we were to create a new command "MyAction", we'd name the class cActionMyAction.  Below is a stub for this new action class:</p>
+			<p>
+			<pre>
+class cActionMyAction : public cAction
+{
+	private:
+		// Private data members for this action
+	public:
+		cActionMyAction(cWorld* world, const cString& args) : cAction(world, args) { ; }
+		
+		static const cString GetDescription() { return "Arguments: My Arguments"; }
+		
+		void Process(cAvidaContext& ctx)
+		{
+			//Perform whatever processing is needed when the action is triggered.
+		}
+};
+</pre></p>
+
+	<li><p>Define the private data members, constructor, description string in GetDescription, and the Process function.  Any arguments that you specify after the action name in the events configuration will be passed to your new class via the args argument in the constructor.</p></li>
+	<li><p>Register the new action with the action library.  At the bottom of each action definitions file, there are the commands that register the individual actions with the action library.  In the PrintActions.cc file, for instance, this function is called RegisterPrintActions.
+	<p>  To register our example action "MyAction", we'd write:<p>
+<p><pre>action_lib->Register&lt;cActionMyAction&gt;("MyAction");</pre><p>
+	<li><p>Test your action.</p></li>
+	<li><p>Add a ==== Action <i>action name</i> ==== line in
+               source/utils/make_actions_html/actions_source_info file</p></li>
+</ol>
+</p>
+
+
+
+<hr />
+<p>
+<a href="index.html">Return to the Index</a> &nbsp;|&nbsp;
+<a href="events.html">The Events File</a> &nbsp;|&nbsp;
+<a href="analyze.html">The Analyze File</a>
+</p>
+
+</body>
+</html>

Added: development/source/utils/make_actions_html/make_actions_html.pl
===================================================================
--- development/source/utils/make_actions_html/make_actions_html.pl	                        (rev 0)
+++ development/source/utils/make_actions_html/make_actions_html.pl	2008-02-18 22:01:49 UTC (rev 2341)
@@ -0,0 +1,208 @@
+#!/usr/bin/perl
+use strict;
+use Time::Local;
+
+my $source_dir = "../../actions/";
+my $final_doc = "../../../documentation/actions.html";
+my $template_file = "./actions_source_info";
+my %section_hash;
+my %command_line_hash;
+my %action_html_hash;
+my %section_header_hash;
+my @section_list;
+my @head_lines;
+my @tail_lines;
+
+# First get a directory of c++ files in the actions source directory
+
+my $found_files = 1;
+my $source_file_list = `ls $source_dir\*\.cc` or $found_files = 0;
+
+if ($found_files) {
+  my @source_files = split /\n/,$source_file_list;
+  my $source_file;
+
+  # If the file name is in the form xxxxxActions.cc read the action names
+
+  foreach $source_file (@source_files) {
+    if ($source_file =~ /Actions\.cc/) {
+      process_action_file($source_file);
+    }
+  }
+} else {
+  print "No C++ code found in $source_dir\n\n";
+  exit;
+}
+
+# Process the file that contains html information
+
+process_template_file();
+
+# Write the html file
+
+print "about to write to $final_doc\n";
+
+open (OUTPUT_FILE,">$final_doc") or die "Can't open file $final_doc";
+print OUTPUT_FILE @head_lines;
+
+# Print out table of all actions
+
+my $num_of_actions = keys(%section_hash);
+my $curr_action;
+my $i = 0;
+print OUTPUT_FILE "<table>\n";
+print OUTPUT_FILE "  <tr>\n";
+foreach $curr_action (sort sort_ic keys %section_hash) {
+  if (($i == 0) or ($i == int($num_of_actions/3)) or 
+      ($i == 2 *  int($num_of_actions/3))) {
+    print OUTPUT_FILE "    <td valign=\"top\">\n";
+  }
+  print OUTPUT_FILE "      <a href=\"\#$curr_action\">$curr_action</a><br>\n";
+  $i++;
+}
+print OUTPUT_FILE "  </tr>\n";
+print OUTPUT_FILE "</table>\n";
+
+# Print out each section header and actions in that section
+
+my $curr_section;
+foreach $curr_section (@section_list) {
+  print OUTPUT_FILE $section_header_hash{$curr_section};
+  print OUTPUT_FILE "<UL>\n";
+  foreach $curr_action (sort sort_ic keys %section_hash) {
+    if ($section_hash{$curr_action} eq $curr_section) {
+      print OUTPUT_FILE "<li><p>\n";
+      print OUTPUT_FILE "  <strong><a name=\"$curr_action\">$curr_action</a>" .
+                        "</strong>\n";
+      if ($command_line_hash{$curr_action}) {
+        print OUTPUT_FILE "  <i>$command_line_hash{$curr_action}</i>\n";  
+      }
+      print OUTPUT_FILE "  </p>\n";
+      print OUTPUT_FILE "  <p>\n";
+      print OUTPUT_FILE "  $action_html_hash{$curr_action}\n";  
+      print OUTPUT_FILE "  </p>\n";
+      print OUTPUT_FILE "</li>\n";
+    }
+  }
+  print OUTPUT_FILE "</UL>\n";
+}
+
+print OUTPUT_FILE @tail_lines;
+close OUTPUT_FILE;
+exit;
+
+############################################################################
+
+# Routine to process C++ code the defines actions
+
+sub process_action_file {
+  my $file_name = pop;
+  my $section_name = $file_name;
+  $section_name =~ s/Actions\.cc//;
+  $section_name =~ s/$source_dir//;
+  push (@section_list, $section_name);
+  my $curr_class = "";
+  my $line_finished = 1;
+  my %action_to_class_h;
+  my %class_to_command_line_h;
+
+  print "Processing $file_name\n";
+  open (SOURCE, $file_name);
+  while (<SOURCE>) {
+
+    # find class names of actions
+
+    if (/^class/) {
+      my @tmp = split;
+      $curr_class = $tmp[1];
+
+    # find argument list of actions
+
+    } elsif (/GetDescription/ or !($line_finished)) {
+      if (/;/) {
+        $line_finished = 1;
+      } else {
+        $line_finished = 0;
+      }
+      s/\\\"/'/g;
+      my @tmp = split /\"/;
+      $class_to_command_line_h{$curr_class} .= $tmp[1];
+      $class_to_command_line_h{$curr_class} =~ s/\'/\"/g;
+
+    # find where action names are linked to their class
+
+    } elsif (/Register/ and !(/void/)) {
+      s/ ?action_lib->Register<//;
+      s/>\(//;
+      my @tmp = split/\"/;
+      $tmp[0] =~ s/^ ?//;
+      $action_to_class_h{$tmp[1]} = $tmp[0];
+    }
+  }
+  close (SOURCE);
+  my $class_item;
+  foreach $class_item (sort keys %class_to_command_line_h) {
+    $class_to_command_line_h{$class_item} =~ s/Arguments: //i;
+  }
+
+  # Connect the action to information about the class
+
+  my $action;
+  foreach $action (sort keys %action_to_class_h) {
+    $section_hash{$action} = $section_name;
+    my $ActClass = $action_to_class_h{$action};
+    $command_line_hash{$action} = $class_to_command_line_h{$ActClass};
+    $command_line_hash{$action} =~ s/</&lt;/g;
+    $command_line_hash{$action} =~ s/>/&gt;/g;
+  }
+}
+
+# Procedure process the file that contains html information
+
+sub process_template_file{
+
+  my $state = "";
+  my $action = "";
+  my $section = "";
+
+  open (TEMPLATE, $template_file) or die "Couldn't open file $template_file\n";
+  while (<TEMPLATE>) {
+
+    # Find the header (=== xxxx ===) lines
+  
+    if (s/^=== //) {
+      s/ ===$//;
+      chomp;
+      $state = $_;
+      if (s/^Action //i) {
+        $action = $_;
+      } elsif (s/^section //i) {
+        $section = $state;
+        $section =~ s/^section //i;
+        $section =~ s/ actions$//i;
+        $section =~ s/ //;
+      }
+    } elsif ($state =~ /^action/i) {
+      $action_html_hash{$action} .= $_;
+    } elsif ($state =~/^section/i) {
+      $section_header_hash{$section} .= $_;
+    } elsif ($state =~/^head/i) {
+      
+      # Check for a line with the date template and replace it 
+      
+      if (/xxxx-xx-xx/) {
+        $_ = "<br>Generated " . localtime(time) . " by make_actions_html";
+      }
+      push (@head_lines, $_);
+    } elsif ($state =~ /^tail/i) {
+      push (@tail_lines, $_);
+    }
+  }
+  close (TEMPLATE);
+}
+
+# Create sort that ignores case
+
+sub sort_ic {
+ lc($a) cmp lc($b);
+} 


Property changes on: development/source/utils/make_actions_html/make_actions_html.pl
___________________________________________________________________
Name: svn:executable
   + *




More information about the Avida-cvs mailing list