Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgenripa committed Dec 20, 2018
1 parent 9229cdb commit 1c6d109
Showing 1 changed file with 35 additions and 22 deletions.
57 changes: 35 additions & 22 deletions TREES_Matlab/read_sim.m
Expand Up @@ -25,17 +25,11 @@

fid = fopen([simpath resultsName '.sim'],'r');

fileVersion = fread(fid,1,'int32');
file_version = fread(fid,1,'int32');
sim.seed = fread(fid,1,'uint32');
if fileVersion~=1
if ~ismember(file_version,[1 2])
fclose(fid);
if fileVersion == 6
sim = readSim7(parfilepath,index);
return
else
disp(fileVersion)
error('Wrong file version:')
end
error(['Wrong file version: ' num2str(file_version)])
end

% Read parameters
Expand All @@ -44,6 +38,9 @@
verbose = readPar(fid,'verbose');
sim.t_max = readPar(fid,'t_max');
sim.sample_interval = readPar(fid,'sample_interval');
if file_version >= 2
sim.checkpoint_interval = readPar(fid,'checkpoint_interval');
end
seed2 = readPar(fid,'seed');
%if seed2 ~= sim.seed
% warning('Seed error')
Expand Down Expand Up @@ -93,7 +90,7 @@
%read fitness modules:
sim.Fitness = {};
while strcmp(modType,'fitness')
sim.Fitness{end+1} = readFitness(modName,fid);
sim.Fitness{end+1} = readFitness(modName,fid,file_version);
[modType,modName] = readParPair(fid);
end

Expand All @@ -118,7 +115,7 @@
sim.loci = fread(fid,1,'int32');
sim.sample_count = fread(fid,1,'int32');
for si=1:sim.sample_count
sim.samples(si) = readSample(fid,sim);
sim.samples(si) = readSample(fid,sim,file_version);
end
if sim.gene_tracking
sim.gene_lists = {};
Expand All @@ -139,7 +136,7 @@
sim.gene_lists{li} = list;
end
end

% Don't read checkpoints
fclose(fid);
save([simpath resultsName '.mat'], 'sim')

Expand All @@ -157,6 +154,9 @@
transform.max = readPar(fid,'max');
case 'normal_deviation'
transform.SD = readPar(fid,'sd');
case 'range'
transform.min = readPar(fid,'min');
transform.max = readPar(fid,'max');
otherwise
error(['Unknown transform : ' name])
end
Expand Down Expand Up @@ -196,7 +196,7 @@
error('Unknown Preference model!')
end

function fitness = readFitness(module,fid)
function fitness = readFitness(module,fid, file_version)
fitness.name = module;
switch lower(module)
case 'resource_landscape'
Expand All @@ -209,6 +209,9 @@
fitness.k_space = readPar(fid,'k_space');
case 'stabilizing_selection'
fitness.trait = readPar(fid,'trait');
if file_version >= 2
fitness.optimal_value = readPar(fid,'optimal_value');
end
fitness.cost_coefficient = readPar(fid,'cost_coefficient');
fitness.cost_exponent = readPar(fid,'cost_exponent');
case {'discrete_resources'}
Expand All @@ -226,30 +229,38 @@
fitness.r = readPar(fid,'r');
fitness.K = readPar(fid,'k');
fitness.s_space = readPar(fid,'s_space');
case 'catastrophe'
case 'catastrophes'
fitness.P_catastrophe = readPar(fid,'p_catastrophe');
fitness.P_survive = readPar(fid,'p_survive');
otherwise
error('Unknown Fitness module!')
end


function sample = readSample(fid,sim)
function sample = readSample(fid,sim, file_version)
sample.gen = fread(fid,1,'int64');
sample.sample_size = fread(fid,1,'int32'); % file format is little endian.

if sim.gene_sampling
switch lower(sim.Genetics.model)
case 'diallelic'
G1 = fread(fid,sim.loci*sample.sample_size,'int32');
G2 = fread(fid,sim.loci*sample.sample_size,'int32');
G1 = fread(fid,sim.loci*sample.sample_size,'int8');
G2 = fread(fid,sim.loci*sample.sample_size,'int8');
case 'continuous_alleles'
G1 = fread(fid,sim.loci*sample.sample_size,'float32');
G2 = fread(fid,sim.loci*sample.sample_size,'float32');
end
sample.G1 = reshape(G1,sim.loci,sample.sample_size);
sample.G2 = reshape(G2,sim.loci,sample.sample_size);
end
if file_version>=2
if sim.gene_tracking
G1id = fread(fid,sim.loci*sample.sample_size,'ubit64');
sample.G1id = reshape(G1id,sim.loci,sample.sample_size);
G2id = fread(fid,sim.loci*sample.sample_size,'ubit64');
sample.G2id = reshape(G2id,sim.loci,sample.sample_size);
end
end

for tri = 1:length(sim.Traits)
tr = sim.Traits(tri);
Expand All @@ -267,11 +278,13 @@
otherwise
error('Unsupported space model')
end
if sim.gene_tracking
G1id = fread(fid,sim.loci*sample.sample_size,'ubit64');
sample.G1id = reshape(G1id,sim.loci,sample.sample_size);
G2id = fread(fid,sim.loci*sample.sample_size,'ubit64');
sample.G2id = reshape(G2id,sim.loci,sample.sample_size);
if file_version==1
if sim.gene_tracking
G1id = fread(fid,sim.loci*sample.sample_size,'ubit64');
sample.G1id = reshape(G1id,sim.loci,sample.sample_size);
G2id = fread(fid,sim.loci*sample.sample_size,'ubit64');
sample.G2id = reshape(G2id,sim.loci,sample.sample_size);
end
end

function val = readPar(fid, pname)
Expand Down

0 comments on commit 1c6d109

Please sign in to comment.