|
function params = read_params(paramfile) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PRECISION = 'single'; |
|
f_params = fopen(paramfile, 'r'); |
|
|
|
|
|
L = fread(f_params, 1, 'int'); |
|
|
|
q = fread(f_params, 1, 'int'); |
|
|
|
params.numSeqs = fread(f_params, 1, 'int'); |
|
|
|
params.numInvalidSeqs = fread(f_params, 1, 'int'); |
|
|
|
params.numIter = fread(f_params, 1, 'int'); |
|
|
|
params.theta = fread(f_params, 1, PRECISION); |
|
|
|
params.lambda_h = fread(f_params, 1, PRECISION); |
|
|
|
params.lambda_J = fread(f_params, 1, PRECISION); |
|
|
|
params.lambda_group = fread(f_params, 1, PRECISION); |
|
|
|
params.nEff = fread(f_params, 1, PRECISION)'; |
|
% 11: Number of invalid sequences in alignment |
|
params.alphabet = char(fread(f_params, q, 'char')); |
|
% 12: Number of invalid sequences in alignment |
|
params.weights = fread(f_params, params.numSeqs + params.numInvalidSeqs, PRECISION); |
|
% 13: Number of invalid sequences in alignment |
|
params.target_seq = char(fread(f_params, L, 'char'))'; |
|
|
|
params.offset_map = fread(f_params, L, 'int'); |
|
|
|
params.fi = fread(f_params, [q L], PRECISION)'; |
|
% 16: Single-site biases |
|
params.hi = fread(f_params, [q L], PRECISION)'; |
|
params.Jij = zeros(L, L, q, q); |
|
|
|
block = fread(f_params, L*(L-1)*q*q/2, PRECISION); |
|
params.fij = zeros(L, L, q, q); |
|
offset = 0; |
|
for i=1:(L-1) |
|
for j=(i+1):L |
|
params.fij(j,i,:,:) = reshape(block(offset + [1:q*q]), [q q]); |
|
params.fij(i,j,:,:) = reshape(block(offset + [1:q*q]), [q q])'; |
|
offset = offset + q*q; |
|
end |
|
end |
|
% 18: Couplings Jij |
|
block = fread(f_params, L*(L-1)*q*q/2, PRECISION); |
|
params.Jij = zeros(L, L, q, q); |
|
offset = 0; |
|
for i=1:(L-1) |
|
for j=(i+1):L |
|
params.Jij(j,i,:,:) = reshape(block(offset + [1:q*q]), [q q]); |
|
params.Jij(i,j,:,:) = reshape(block(offset + [1:q*q]), [q q])'; |
|
offset = offset + q*q; |
|
end |
|
end |
|
fclose(f_params); |
|
end |