[Avida-SVN] r2741 - in branches/interrupt/source: actions analyze cpu main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Tue Aug 5 08:38:08 PDT 2008
Author: beckma24
Date: 2008-08-05 11:38:07 -0400 (Tue, 05 Aug 2008)
New Revision: 2741
Modified:
branches/interrupt/source/actions/PrintActions.cc
branches/interrupt/source/analyze/cAnalyze.cc
branches/interrupt/source/analyze/cAnalyzeGenotype.cc
branches/interrupt/source/analyze/cMutationalNeighborhood.cc
branches/interrupt/source/cpu/cCPUMemory.cc
branches/interrupt/source/main/cGenome.cc
branches/interrupt/source/main/cGenome.h
branches/interrupt/source/main/cLandscape.cc
Log:
first part of code to protect sites in genome
Modified: branches/interrupt/source/actions/PrintActions.cc
===================================================================
--- branches/interrupt/source/actions/PrintActions.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/actions/PrintActions.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -2045,7 +2045,7 @@
if (mode == -1 && count == total) break;
if ( i < con_length )
- con_genome[i].SetOp(mode);
+ con_genome.SetOp(i, mode);
// Print all needed files.
if (i < m_lines_saved) {
Modified: branches/interrupt/source/analyze/cAnalyze.cc
===================================================================
--- branches/interrupt/source/analyze/cAnalyze.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/analyze/cAnalyze.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -512,7 +512,7 @@
// Test fitness of each mutant.
for (int mod_inst = 0; mod_inst < num_insts; mod_inst++) {
- mod_genome[line_no].SetOp(mod_inst);
+ mod_genome.SetOp(line_no, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
// Ajust fitness ...
@@ -561,7 +561,7 @@
entropy += this_entropy;
// Reset the mod_genome back to the original sequence.
- mod_genome[line_no].SetOp(cur_inst);
+ mod_genome.SetOp(line_no, cur_inst);
}
return entropy;
}
@@ -612,8 +612,8 @@
// Test fitness of each mutant.
for (int mod_inst_1 = 0; mod_inst_1 < num_insts; mod_inst_1++){
for (int mod_inst_2 = 0; mod_inst_2 < num_insts; mod_inst_2++) {
- mod_genome[line_1].SetOp(mod_inst_1);
- mod_genome[line_2].SetOp(mod_inst_2);
+ mod_genome.SetOp(line_1, mod_inst_1);
+ mod_genome.SetOp(line_2, mod_inst_2);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
// Adjust fitness ...
@@ -677,8 +677,8 @@
pairwiseEntropy[line_1][line_2] = this_entropy;
// Reset the mod_genome back to the original sequence.
- mod_genome[line_1].SetOp(cur_inst_1);
- mod_genome[line_2].SetOp(cur_inst_2);
+ mod_genome.SetOp(line_1, cur_inst_1);
+ mod_genome.SetOp(line_2, cur_inst_2);
}
} //End Loops
@@ -710,7 +710,7 @@
// Test fitness of each mutant.
for (int mod_inst = 0; mod_inst < num_insts; mod_inst++) {
- mod_genome[line_no].SetOp(mod_inst);
+ mod_genome.SetOp(line_no, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
test_fitness[mod_inst] = test_genotype.GetFitness();
@@ -770,7 +770,7 @@
entropy += this_entropy;
// Reset the mod_genome back to the base_genome.
- mod_genome[line_no].SetOp(cur_inst);
+ mod_genome.SetOp(line_no, cur_inst);
}
return entropy;
}
@@ -807,7 +807,7 @@
// Test fitness of each mutant.
for (int mod_inst = 0; mod_inst < num_insts; mod_inst++) {
- genotype1_mod_genome[line_no].SetOp(mod_inst);
+ genotype1_mod_genome.SetOp(line_no, mod_inst);
cAnalyzeGenotype test_genotype(m_world, genotype1_mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
// Ajust fitness ...
@@ -855,7 +855,7 @@
genotype1_info[line_no] = 1 - this_entropy;
// Reset the mod_genome back to the original sequence.
- genotype1_mod_genome[line_no].SetOp(cur_inst);
+ genotype1_mod_genome.SetOp(line_no, cur_inst);
}
genotype2->Recalculate(m_ctx);
@@ -876,7 +876,7 @@
// Test fitness of each mutant.
for (int mod_inst = 0; mod_inst < num_insts; mod_inst++) {
- genotype2_mod_genome[line_no].SetOp(mod_inst);
+ genotype2_mod_genome.SetOp(line_no, mod_inst);
cAnalyzeGenotype test_genotype(m_world, genotype2_mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
// Ajust fitness ...
@@ -928,7 +928,7 @@
} // else increasing is 0, do nothing
// Reset the mod_genome back to the original sequence.
- genotype2_mod_genome[line_no].SetOp(cur_inst);
+ genotype2_mod_genome.SetOp(line_no, cur_inst);
}
@@ -3039,7 +3039,7 @@
for (int line = 0; line < length_genome; ++ line) {
int given_inst = given_genome[line].GetOp();
mod_genome = base_genome;
- mod_genome[line].SetOp(given_inst);
+ mod_genome.SetOp(line, given_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx, &test_info);
@@ -3074,7 +3074,7 @@
int cur_inst = base_genome[line].GetOp();
for (int mod_inst = 0; mod_inst < num_insts; ++ mod_inst) {
- mod_genome[line].SetOp(mod_inst);
+ mod_genome.SetOp(line, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx, &test_info);
if (test_genotype.GetFitness() >= base_fitness) {
@@ -3085,7 +3085,7 @@
}
}
- mod_genome[line].SetOp(cur_inst);
+ mod_genome.SetOp(line, cur_inst);
}
/////////////////////////////////////////
@@ -3485,7 +3485,7 @@
int num_neutral = 0;
for (int mod_inst = 0; mod_inst < num_insts; ++ mod_inst) {
- mod_genome[line].SetOp(mod_inst);
+ mod_genome.SetOp(line, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx, &test_info);
if (test_genotype.GetFitness() >= base_fitness) {
@@ -3501,7 +3501,7 @@
}
- mod_genome[line].SetOp(cur_inst);
+ mod_genome.SetOp(line, cur_inst);
}
point_mut.insert(make_pair(genotype->GetID(), prob));
@@ -4468,7 +4468,7 @@
}
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
tArray<int> ko_pair_effect(ko_effect);
@@ -4503,8 +4503,8 @@
}
// Reset the mod_genome back to the original sequence.
- mod_genome[line1].SetOp(cur_inst1);
- mod_genome[line2].SetOp(cur_inst2);
+ mod_genome.SetOp(line1, cur_inst1);
+ mod_genome.SetOp(line2, cur_inst2);
}
}
}
@@ -4861,7 +4861,7 @@
fp << endl;
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
@@ -5101,7 +5101,7 @@
}
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
} // end of genotype-phenotype mapping for a single organism
for (int i = 0; i < num_cols; i++) if (num_inst[i] != 0) total_task++;
@@ -5321,7 +5321,7 @@
}
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
} // end of genotype-phenotype mapping for a single organism
@@ -5538,7 +5538,7 @@
}
}
else {
- mod_genome[line_num].SetOp(mod_inst);
+ mod_genome.SetOp(line_num, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
const double test_fitness = test_genotype.GetFitness() / base_fitness;
@@ -5619,7 +5619,7 @@
fp << endl;
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
@@ -6893,7 +6893,7 @@
for (int i = 0; i < size; i++) {
if (prev_inst[i] == -1) num_static++;
else {
- test_genome[i].SetOp(prev_inst[i]);
+ test_genome.SetOp(i, prev_inst[i]);
testcpu->TestGenome(m_ctx, test_info, test_genome);
const double cur_fitness = test_info.GetGenotypeFitness();
if (cur_fitness > base_fitness) num_detrimental++;
@@ -7008,7 +7008,7 @@
// Test fitness of each mutant.
for (int mod_inst = 0; mod_inst < num_insts; mod_inst++) {
- mod_genome[line_num].SetOp(mod_inst);
+ mod_genome.SetOp(line_num, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
test_fitness[mod_inst] = test_genotype.GetFitness();
@@ -7070,7 +7070,7 @@
lineage_fp << complexity << " ";
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
m_world->GetDataFileManager().Remove(filename);
@@ -7201,8 +7201,8 @@
for (int mod_inst1 = 0; mod_inst1 < num_insts; mod_inst1++) {
for (int mod_inst2 = 0; mod_inst2 < num_insts; mod_inst2++) {
// modify mod_genome at two sites
- mod_genome[site1].SetOp(mod_inst1);
- mod_genome[site2].SetOp(mod_inst2);
+ mod_genome.SetOp(site1, mod_inst1);
+ mod_genome.SetOp(site2, mod_inst2);
// analyze mod_genome
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
@@ -7214,8 +7214,8 @@
fit_land_fp.Endl();
}
// Reset the mod_genome back to the original sequence.
- mod_genome[site1].SetOp(curr_inst1);
- mod_genome[site2].SetOp(curr_inst2);
+ mod_genome.SetOp(site1, curr_inst1);
+ mod_genome.SetOp(site2, curr_inst2);
// close file
m_world->GetDataFileManager().Remove(fl_filename);
@@ -7390,7 +7390,7 @@
// recalculate fitness of each mutant.
for (int mod_inst = 0; mod_inst < num_insts; mod_inst++) {
- mod_genome[line_num].SetOp(mod_inst);
+ mod_genome.SetOp(line_num, mod_inst);
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
test_fitness[mod_inst] = test_genotype.GetFitness();
@@ -7486,7 +7486,7 @@
entropy_ss_bits[line_num] = entropy_bits;
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
/*
@@ -7528,8 +7528,8 @@
for (int mod_inst1 = 0; mod_inst1 < num_insts; mod_inst1++) {
for (int mod_inst2 = 0; mod_inst2 < num_insts; mod_inst2++) {
// modify mod_genome at two sites
- mod_genome[line_num1].SetOp(mod_inst1);
- mod_genome[line_num2].SetOp(mod_inst2);
+ mod_genome.SetOp(line_num1, mod_inst1);
+ mod_genome.SetOp(line_num2, mod_inst2);
// analyze mod_genome
cAnalyzeGenotype test_genotype(m_world, mod_genome, inst_set);
test_genotype.Recalculate(m_ctx);
@@ -7712,8 +7712,8 @@
fp_2s.Endl();
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num1].SetOp(cur_inst1);
- mod_genome[line_num2].SetOp(cur_inst2);
+ mod_genome.SetOp(line_num1, cur_inst1);
+ mod_genome.SetOp(line_num2, cur_inst2);
}// end line 2
}// end line 1
Modified: branches/interrupt/source/analyze/cAnalyzeGenotype.cc
===================================================================
--- branches/interrupt/source/analyze/cAnalyzeGenotype.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/analyze/cAnalyzeGenotype.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -269,7 +269,7 @@
}
// Reset the mod_genome back to the original sequence.
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
// Only continue from here if we are looking at all pairs of knockouts
@@ -328,8 +328,8 @@
}
// Reset the mod_genome back to the original sequence.
- mod_genome[line1].SetOp(cur_inst1);
- mod_genome[line2].SetOp(cur_inst2);
+ mod_genome.SetOp(line1, cur_inst1);
+ mod_genome.SetOp(line2, cur_inst2);
}
}
Modified: branches/interrupt/source/analyze/cMutationalNeighborhood.cc
===================================================================
--- branches/interrupt/source/analyze/cMutationalNeighborhood.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/analyze/cMutationalNeighborhood.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -222,7 +222,7 @@
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
if (cur_inst == inst_num) continue;
- mod_genome[cur_site].SetOp(inst_num);
+ mod_genome.SetOp(cur_site, inst_num);
m_fitness_point[cur_site][inst_num] = ProcessOneStepGenome(ctx, testcpu, test_info, mod_genome, odata, cur_site);
ProcessTwoStepPoint(ctx, testcpu, test_info, cur_site, mod_genome);
@@ -239,7 +239,7 @@
// Loop through all instructions...
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
- mod_genome[cur_site].SetOp(inst_num);
+ mod_genome.SetOp(cur_site, inst_num);
m_fitness_insert[cur_site][inst_num] = ProcessOneStepGenome(ctx, testcpu, test_info, mod_genome, odata, cur_site);
ProcessTwoStepInsert(ctx, testcpu, test_info, cur_site, mod_genome);
@@ -334,11 +334,11 @@
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
if (cur_inst == inst_num) continue;
- mod_genome[line_num].SetOp(inst_num);
+ mod_genome.SetOp(line_num, inst_num);
ProcessTwoStepGenome(ctx, testcpu, test_info, mod_genome, tdata, sPendFit(m_fitness_point, line_num, inst_num), cur);
}
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
}
@@ -356,7 +356,7 @@
mod_genome.Insert(line_num, cInstruction(0));
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
- mod_genome[cur_site].SetOp(inst_num);
+ mod_genome.SetOp(cur_site, inst_num);
ProcessTwoStepGenome(ctx, testcpu, test_info, mod_genome, tdata, sPendFit(m_fitness_insert, line_num - 1, inst_num), cur);
}
mod_genome.Remove(line_num);
@@ -399,11 +399,11 @@
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
if (cur_inst == inst_num) continue;
- mod_genome[line_num].SetOp(inst_num);
+ mod_genome.SetOp(line_num, inst_num);
ProcessTwoStepGenome(ctx, testcpu, test_info, mod_genome, tdata, sPendFit(m_fitness_point, actual, inst_num), cur);
}
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
}
@@ -443,11 +443,11 @@
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
if (cur_inst == inst_num) continue;
- mod_genome[line_num].SetOp(inst_num);
+ mod_genome.SetOp(line_num, inst_num);
ProcessTwoStepGenome(ctx, testcpu, test_info, mod_genome, tdata, sPendFit(m_fitness_point, actual, inst_num), cur);
}
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
}
Modified: branches/interrupt/source/cpu/cCPUMemory.cc
===================================================================
--- branches/interrupt/source/cpu/cCPUMemory.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/cpu/cCPUMemory.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -55,6 +55,7 @@
const int new_array_min = new_size + MEMORY_INCREASE_MINIMUM;
if (new_array_min > new_array_size) new_array_size = new_array_min;
genome.Resize(new_array_size);
+ protected_sites.Resize(new_array_size);
flag_array.Resize(new_array_size);
}
@@ -91,6 +92,7 @@
// Fill in the new information...
for (int i = 0; i < active_size; i++) {
genome[i] = other_memory.genome[i];
+ protected_sites[i] = other_memory.IsProtected(i);
flag_array[i] = other_memory.flag_array[i];
}
}
@@ -103,6 +105,7 @@
// Fill in the new information...
for (int i = 0; i < active_size; i++) {
genome[i] = other_genome[i];
+ protected_sites[i] = other_genome.IsProtected(i);
flag_array[i] = 0;
}
}
Modified: branches/interrupt/source/main/cGenome.cc
===================================================================
--- branches/interrupt/source/main/cGenome.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/main/cGenome.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -30,14 +30,17 @@
cGenome::cGenome(int _size)
- : genome(_size), active_size(_size)
+ : genome(_size), protected_sites(_size), active_size(_size)
{
}
cGenome::cGenome(const cGenome & in_genome)
- : genome(in_genome.GetSize()), active_size(in_genome.GetSize())
+ : genome(in_genome.GetSize()), protected_sites(in_genome.GetSize()), active_size(in_genome.GetSize())
{
- for (int i = 0; i < active_size; i++) genome[i] = in_genome[i];
+ for (int i = 0; i < active_size; i++) {
+ genome[i] = in_genome[i];
+ protected_sites[i] = in_genome.IsProtected(i);
+ }
}
cGenome::cGenome(const cString & in_string)
@@ -47,6 +50,9 @@
active_size = tmp_string.GetSize();
genome.ResizeClear(active_size);
+ protected_sites.ResizeClear(active_size);
+ //protected_sites.SetAll(false);
+
for (int i = 0; i < active_size; i++) {
genome[i].SetSymbol(tmp_string[i]);
}
@@ -64,6 +70,7 @@
{
for(cInstruction* i=begin; i!=end; ++i,++active_size) {
genome.Push(*i);
+ protected_sites.Push(false);
}
}
@@ -78,11 +85,13 @@
// If we need to resize, do so...
active_size = other_genome.GetSize();
genome.ResizeClear(active_size);
+ protected_sites.ResizeClear(active_size);
// Now that both code arrays are the same size, copy the other one over.
for (int i = 0; i < active_size; i++) {
genome[i] = other_genome[i];
+ protected_sites[i] = other_genome.IsProtected(i);
}
}
@@ -99,7 +108,19 @@
return true;
}
+void cGenome::SetInst(int index, const cInstruction& inst, bool protect_site) {
+ if(!protected_sites[index]) {
+ genome[index] = inst;
+ protected_sites[index] = protect_site;
+ }
+}
+void cGenome::SetOp(int index, const int op) {
+ if(!protected_sites[index]) {
+ genome[index].SetOp(op);
+ }
+}
+
void cGenome::Copy(int to, int from)
{
assert(to >= 0 && to < active_size);
Modified: branches/interrupt/source/main/cGenome.h
===================================================================
--- branches/interrupt/source/main/cGenome.h 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/main/cGenome.h 2008-08-05 15:38:07 UTC (rev 2741)
@@ -47,6 +47,7 @@
{
protected:
tArray<cInstruction> genome;
+ tArray<bool> protected_sites;
int active_size;
public:
@@ -68,6 +69,11 @@
cInstruction& operator[](int index) { assert(index >= 0 && index < active_size); return genome[index]; }
const cInstruction& operator[](int index) const { assert(index >= 0 && index < active_size); return genome[index]; }
+ bool IsProtected(int index) const { assert(index >= 0 && index < active_size); return protected_sites[index]; }
+
+ void SetInst(int index, const cInstruction& inst, bool protect_site);
+ void SetOp(int index, const int op);
+
virtual void Copy(int to, int from);
bool OK() const;
Modified: branches/interrupt/source/main/cLandscape.cc
===================================================================
--- branches/interrupt/source/main/cLandscape.cc 2008-08-01 13:33:27 UTC (rev 2740)
+++ branches/interrupt/source/main/cLandscape.cc 2008-08-05 15:38:07 UTC (rev 2741)
@@ -186,7 +186,7 @@
for (int inst_num = 0; inst_num < inst_size; inst_num++) {
if (cur_inst == inst_num) continue;
- mod_genome[line_num].SetOp(inst_num);
+ mod_genome.SetOp(line_num, inst_num);
if (cur_distance <= 1) {
ProcessGenome(ctx, testcpu, mod_genome);
if (test_info.GetColonyFitness() >= neut_min) site_count[line_num]++;
@@ -195,7 +195,7 @@
}
}
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
}
@@ -227,14 +227,14 @@
if (cur_inst == inst_num) {
fitness = base_fitness;
} else {
- mod_genome[line_num].SetOp(inst_num);
+ mod_genome.SetOp(line_num, inst_num);
fitness = ProcessGenome(ctx, testcpu, mod_genome);
}
df.Write(fitness, "Mutation Fitness (instruction = column_number - 2)");
}
df.Endl();
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
delete testcpu;
@@ -646,12 +646,12 @@
continue;
}
- mod_genome[line_num].SetOp(inst_num);
+ mod_genome.SetOp(line_num, inst_num);
ProcessGenome(ctx, testcpu, mod_genome);
fitness_chart(line_num, inst_num) = test_info.GetColonyFitness();
}
- mod_genome[line_num].SetOp(cur_inst);
+ mod_genome.SetOp(line_num, cur_inst);
}
}
More information about the Avida-cvs
mailing list