Refactoring
This commit is contained in:
parent
dc9b4f7f9c
commit
a7291a9e79
2 changed files with 21 additions and 502 deletions
501
R/greedyMix.R
501
R/greedyMix.R
|
|
@ -382,27 +382,6 @@ greedyMix <- function(
|
|||
}
|
||||
}
|
||||
|
||||
# %-------------------------------------------------------------------------------------
|
||||
|
||||
# function [partitionSummary, added] = addToSummary(logml, partitionSummary, worstIndex)
|
||||
# % Tiedet<65><74>n, ett?annettu logml on isompi kuin huonoin arvo
|
||||
# % partitionSummary taulukossa. Jos partitionSummary:ss?ei viel?ole
|
||||
# % annettua logml arvoa, niin lis<69>t<EFBFBD><74>n worstIndex:in kohtaan uusi logml ja
|
||||
# % nykyist?partitiota vastaava nclusters:in arvo. Muutoin ei tehd?mit<69><74>n.
|
||||
|
||||
# apu = find(abs(partitionSummary(:,2)-logml)<1e-5);
|
||||
# if isempty(apu)
|
||||
# % Nyt l<>ydetty partitio ei ole viel?kirjattuna summaryyn.
|
||||
# global PARTITION;
|
||||
# npops = length(unique(PARTITION));
|
||||
# partitionSummary(worstIndex,1) = npops;
|
||||
# partitionSummary(worstIndex,2) = logml;
|
||||
# added = 1;
|
||||
# else
|
||||
# added = 0;
|
||||
# end
|
||||
|
||||
|
||||
# %--------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
@ -429,408 +408,7 @@ greedyMix <- function(
|
|||
# har=find(CDF>slump);
|
||||
# svar=har(1);
|
||||
|
||||
|
||||
# %-------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function updateGlobalVariables(ind, i2, rowsFromInd, diffInCounts, ...
|
||||
# adjprior, priorTerm)
|
||||
# % Suorittaa globaalien muuttujien muutokset, kun yksil?ind
|
||||
# % on siirret<65><74>n koriin i2.
|
||||
|
||||
# global PARTITION;
|
||||
# global COUNTS;
|
||||
# global SUMCOUNTS;
|
||||
# global POP_LOGML;
|
||||
|
||||
# i1 = PARTITION(ind);
|
||||
# PARTITION(ind)=i2;
|
||||
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1) - diffInCounts;
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2) + diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:) - sum(diffInCounts);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:) + sum(diffInCounts);
|
||||
|
||||
# POP_LOGML([i1 i2]) = computePopulationLogml([i1 i2], adjprior, priorTerm);
|
||||
|
||||
|
||||
# %---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function updateGlobalVariables2( ...
|
||||
# i1, i2, rowsFromInd, diffInCounts, adjprior, priorTerm);
|
||||
# % Suorittaa globaalien muuttujien muutokset, kun kaikki
|
||||
# % korissa i1 olevat yksil<69>t siirret<65><74>n koriin i2.
|
||||
|
||||
# global PARTITION;
|
||||
# global COUNTS;
|
||||
# global SUMCOUNTS;
|
||||
# global POP_LOGML;
|
||||
|
||||
# inds = find(PARTITION==i1);
|
||||
# PARTITION(inds) = i2;
|
||||
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1) - diffInCounts;
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2) + diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:) - sum(diffInCounts);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:) + sum(diffInCounts);
|
||||
|
||||
# POP_LOGML(i1) = 0;
|
||||
# POP_LOGML(i2) = computePopulationLogml(i2, adjprior, priorTerm);
|
||||
|
||||
|
||||
# %------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function updateGlobalVariables3(muuttuvat, rowsFromInd, diffInCounts, ...
|
||||
# adjprior, priorTerm, i2);
|
||||
# % Suorittaa globaalien muuttujien p<>ivitykset, kun yksil<69>t 'muuttuvat'
|
||||
# % siirret<65><74>n koriin i2. Ennen siirtoa yksil<69>iden on kuuluttava samaan
|
||||
# % koriin.
|
||||
|
||||
# global PARTITION;
|
||||
# global COUNTS;
|
||||
# global SUMCOUNTS;
|
||||
# global POP_LOGML;
|
||||
|
||||
# i1 = PARTITION(muuttuvat(1));
|
||||
# PARTITION(muuttuvat) = i2;
|
||||
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1) - diffInCounts;
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2) + diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:) - sum(diffInCounts);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:) + sum(diffInCounts);
|
||||
|
||||
# POP_LOGML([i1 i2]) = computePopulationLogml([i1 i2], adjprior, priorTerm);
|
||||
|
||||
|
||||
# %----------------------------------------------------------------------
|
||||
|
||||
|
||||
# function inds = returnInOrder(inds, pop, rowsFromInd, data, adjprior, priorTerm)
|
||||
# % Palauttaa yksil<69>t j<>rjestyksess?siten, ett?ensimm<6D>isen?on
|
||||
# % se, jonka poistaminen populaatiosta pop nostaisi logml:n
|
||||
# % arvoa eniten.
|
||||
|
||||
# global COUNTS; global SUMCOUNTS;
|
||||
# ninds = length(inds);
|
||||
# apuTaulu = [inds, zeros(ninds,1)];
|
||||
|
||||
# for i=1:ninds
|
||||
# ind = inds(i);
|
||||
# rows = (ind-1)*rowsFromInd+1 : ind*rowsFromInd;
|
||||
# diffInCounts = computeDiffInCounts(rows, size(COUNTS,1), size(COUNTS,2), data);
|
||||
# diffInSumCounts = sum(diffInCounts);
|
||||
|
||||
# COUNTS(:,:,pop) = COUNTS(:,:,pop)-diffInCounts;
|
||||
# SUMCOUNTS(pop,:) = SUMCOUNTS(pop,:)-diffInSumCounts;
|
||||
# apuTaulu(i, 2) = computePopulationLogml(pop, adjprior, priorTerm);
|
||||
# COUNTS(:,:,pop) = COUNTS(:,:,pop)+diffInCounts;
|
||||
# SUMCOUNTS(pop,:) = SUMCOUNTS(pop,:)+diffInSumCounts;
|
||||
# end
|
||||
# apuTaulu = sortrows(apuTaulu,2);
|
||||
# inds = apuTaulu(ninds:-1:1,1);
|
||||
|
||||
# %------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function [muutokset, diffInCounts] = ...
|
||||
# laskeMuutokset(ind, rowsFromInd, data, adjprior, priorTerm)
|
||||
# % Palauttaa npops*1 taulun, jossa i:s alkio kertoo, mik?olisi
|
||||
# % muutos logml:ss? mik<69>li yksil?ind siirret<65><74>n koriin i.
|
||||
# % diffInCounts on poistettava COUNTS:in siivusta i1 ja lis<69>tt<74>v?
|
||||
# % COUNTS:in siivuun i2, mik<69>li muutos toteutetaan.
|
||||
|
||||
# global COUNTS; global SUMCOUNTS;
|
||||
# global PARTITION; global POP_LOGML;
|
||||
# npops = size(COUNTS,3);
|
||||
# muutokset = zeros(npops,1);
|
||||
|
||||
# i1 = PARTITION(ind);
|
||||
# i1_logml = POP_LOGML(i1);
|
||||
|
||||
# rows = (ind-1)*rowsFromInd+1 : ind*rowsFromInd;
|
||||
# diffInCounts = computeDiffInCounts(rows, size(COUNTS,1), size(COUNTS,2), data);
|
||||
# diffInSumCounts = sum(diffInCounts);
|
||||
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1)-diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:)-diffInSumCounts;
|
||||
# new_i1_logml = computePopulationLogml(i1, adjprior, priorTerm);
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1)+diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:)+diffInSumCounts;
|
||||
|
||||
# i2 = [1:i1-1 , i1+1:npops];
|
||||
# i2_logml = POP_LOGML(i2);
|
||||
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2)+repmat(diffInCounts, [1 1 npops-1]);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:)+repmat(diffInSumCounts,[npops-1 1]);
|
||||
# new_i2_logml = computePopulationLogml(i2, adjprior, priorTerm);
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2)-repmat(diffInCounts, [1 1 npops-1]);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:)-repmat(diffInSumCounts,[npops-1 1]);
|
||||
|
||||
# muutokset(i2) = new_i1_logml - i1_logml ...
|
||||
# + new_i2_logml - i2_logml;
|
||||
|
||||
|
||||
# %------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function [muutokset, diffInCounts] = laskeMuutokset2( ...
|
||||
# i1, rowsFromInd, data, adjprior, priorTerm);
|
||||
# % Palauttaa npops*1 taulun, jossa i:s alkio kertoo, mik?olisi
|
||||
# % muutos logml:ss? mik<69>li korin i1 kaikki yksil<69>t siirret<65><74>n
|
||||
# % koriin i.
|
||||
|
||||
# global COUNTS; global SUMCOUNTS;
|
||||
# global PARTITION; global POP_LOGML;
|
||||
# npops = size(COUNTS,3);
|
||||
# muutokset = zeros(npops,1);
|
||||
|
||||
# i1_logml = POP_LOGML(i1);
|
||||
|
||||
# inds = find(PARTITION==i1);
|
||||
# ninds = length(inds);
|
||||
|
||||
# if ninds==0
|
||||
# diffInCounts = zeros(size(COUNTS,1), size(COUNTS,2));
|
||||
# return;
|
||||
# end
|
||||
|
||||
# rows = computeRows(rowsFromInd, inds, ninds);
|
||||
|
||||
# diffInCounts = computeDiffInCounts(rows, size(COUNTS,1), size(COUNTS,2), data);
|
||||
# diffInSumCounts = sum(diffInCounts);
|
||||
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1)-diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:)-diffInSumCounts;
|
||||
# new_i1_logml = computePopulationLogml(i1, adjprior, priorTerm);
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1)+diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:)+diffInSumCounts;
|
||||
|
||||
# i2 = [1:i1-1 , i1+1:npops];
|
||||
# i2_logml = POP_LOGML(i2);
|
||||
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2)+repmat(diffInCounts, [1 1 npops-1]);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:)+repmat(diffInSumCounts,[npops-1 1]);
|
||||
# new_i2_logml = computePopulationLogml(i2, adjprior, priorTerm);
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2)-repmat(diffInCounts, [1 1 npops-1]);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:)-repmat(diffInSumCounts,[npops-1 1]);
|
||||
|
||||
# muutokset(i2) = new_i1_logml - i1_logml ...
|
||||
# + new_i2_logml - i2_logml;
|
||||
|
||||
|
||||
|
||||
# %------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function muutokset = laskeMuutokset3(T2, inds2, rowsFromInd, ...
|
||||
# data, adjprior, priorTerm, i1)
|
||||
# % Palauttaa length(unique(T2))*npops taulun, jossa (i,j):s alkio
|
||||
# % kertoo, mik?olisi muutos logml:ss? jos populaation i1 osapopulaatio
|
||||
# % inds2(find(T2==i)) siirret<65><74>n koriin j.
|
||||
|
||||
# global COUNTS; global SUMCOUNTS;
|
||||
# global PARTITION; global POP_LOGML;
|
||||
# npops = size(COUNTS,3);
|
||||
# npops2 = length(unique(T2));
|
||||
# muutokset = zeros(npops2, npops);
|
||||
|
||||
# i1_logml = POP_LOGML(i1);
|
||||
|
||||
# for pop2 = 1:npops2
|
||||
# inds = inds2(find(T2==pop2));
|
||||
# ninds = length(inds);
|
||||
# if ninds>0
|
||||
# rows = computeRows(rowsFromInd, inds, ninds);
|
||||
# diffInCounts = computeDiffInCounts(rows, size(COUNTS,1), size(COUNTS,2), data);
|
||||
# diffInSumCounts = sum(diffInCounts);
|
||||
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1)-diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:)-diffInSumCounts;
|
||||
# new_i1_logml = computePopulationLogml(i1, adjprior, priorTerm);
|
||||
# COUNTS(:,:,i1) = COUNTS(:,:,i1)+diffInCounts;
|
||||
# SUMCOUNTS(i1,:) = SUMCOUNTS(i1,:)+diffInSumCounts;
|
||||
|
||||
# i2 = [1:i1-1 , i1+1:npops];
|
||||
# i2_logml = POP_LOGML(i2)';
|
||||
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2)+repmat(diffInCounts, [1 1 npops-1]);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:)+repmat(diffInSumCounts,[npops-1 1]);
|
||||
# new_i2_logml = computePopulationLogml(i2, adjprior, priorTerm)';
|
||||
# COUNTS(:,:,i2) = COUNTS(:,:,i2)-repmat(diffInCounts, [1 1 npops-1]);
|
||||
# SUMCOUNTS(i2,:) = SUMCOUNTS(i2,:)-repmat(diffInSumCounts,[npops-1 1]);
|
||||
|
||||
# muutokset(pop2,i2) = new_i1_logml - i1_logml ...
|
||||
# + new_i2_logml - i2_logml;
|
||||
# end
|
||||
# end
|
||||
|
||||
|
||||
# %------------------------------------------------------------------------------------
|
||||
|
||||
# function muutokset = laskeMuutokset5(inds, rowsFromInd, data, adjprior, ...
|
||||
# priorTerm, i1, i2)
|
||||
|
||||
# % Palauttaa length(inds)*1 taulun, jossa i:s alkio kertoo, mik?olisi
|
||||
# % muutos logml:ss? mik<69>li yksil?i vaihtaisi koria i1:n ja i2:n v<>lill?
|
||||
|
||||
# global COUNTS; global SUMCOUNTS;
|
||||
# global PARTITION; global POP_LOGML;
|
||||
|
||||
# ninds = length(inds);
|
||||
# muutokset = zeros(ninds,1);
|
||||
|
||||
# i1_logml = POP_LOGML(i1);
|
||||
# i2_logml = POP_LOGML(i2);
|
||||
|
||||
# for i = 1:ninds
|
||||
# ind = inds(i);
|
||||
# if PARTITION(ind)==i1
|
||||
# pop1 = i1; %mist?
|
||||
# pop2 = i2; %mihin
|
||||
# else
|
||||
# pop1 = i2;
|
||||
# pop2 = i1;
|
||||
# end
|
||||
# rows = (ind-1)*rowsFromInd+1 : ind*rowsFromInd;
|
||||
# diffInCounts = computeDiffInCounts(rows, size(COUNTS,1), size(COUNTS,2), data);
|
||||
# diffInSumCounts = sum(diffInCounts);
|
||||
|
||||
# COUNTS(:,:,pop1) = COUNTS(:,:,pop1)-diffInCounts;
|
||||
# SUMCOUNTS(pop1,:) = SUMCOUNTS(pop1,:)-diffInSumCounts;
|
||||
# COUNTS(:,:,pop2) = COUNTS(:,:,pop2)+diffInCounts;
|
||||
# SUMCOUNTS(pop2,:) = SUMCOUNTS(pop2,:)+diffInSumCounts;
|
||||
|
||||
# PARTITION(ind) = pop2;
|
||||
|
||||
# new_logmls = computePopulationLogml([i1 i2], adjprior, priorTerm);
|
||||
|
||||
# muutokset(i) = sum(new_logmls);
|
||||
|
||||
# COUNTS(:,:,pop1) = COUNTS(:,:,pop1)+diffInCounts;
|
||||
# SUMCOUNTS(pop1,:) = SUMCOUNTS(pop1,:)+diffInSumCounts;
|
||||
# COUNTS(:,:,pop2) = COUNTS(:,:,pop2)-diffInCounts;
|
||||
# SUMCOUNTS(pop2,:) = SUMCOUNTS(pop2,:)-diffInSumCounts;
|
||||
|
||||
# PARTITION(ind) = pop1;
|
||||
# end
|
||||
|
||||
# muutokset = muutokset - i1_logml - i2_logml;
|
||||
|
||||
# %--------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
# function diffInCounts = computeDiffInCounts(rows, max_noalle, nloci, data)
|
||||
# % Muodostaa max_noalle*nloci taulukon, jossa on niiden alleelien
|
||||
# % lukum<75><6D>r<EFBFBD>t (vastaavasti kuin COUNTS:issa), jotka ovat data:n
|
||||
# % riveill?rows.
|
||||
|
||||
# diffInCounts = zeros(max_noalle, nloci);
|
||||
# for i=rows
|
||||
# row = data(i,:);
|
||||
# notEmpty = find(row>=0);
|
||||
|
||||
# if length(notEmpty)>0
|
||||
# diffInCounts(row(notEmpty) + (notEmpty-1)*max_noalle) = ...
|
||||
# diffInCounts(row(notEmpty) + (notEmpty-1)*max_noalle) + 1;
|
||||
# end
|
||||
# end
|
||||
|
||||
|
||||
|
||||
# %------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function popLogml = computePopulationLogml(pops, adjprior, priorTerm)
|
||||
# % Palauttaa length(pops)*1 taulukon, jossa on laskettu korikohtaiset
|
||||
# % logml:t koreille, jotka on m<><6D>ritelty pops-muuttujalla.
|
||||
|
||||
# global COUNTS;
|
||||
# global SUMCOUNTS;
|
||||
# x = size(COUNTS,1);
|
||||
# y = size(COUNTS,2);
|
||||
# z = length(pops);
|
||||
|
||||
# popLogml = ...
|
||||
# squeeze(sum(sum(reshape(...
|
||||
# gammaln(repmat(adjprior,[1 1 length(pops)]) + COUNTS(:,:,pops)) ...
|
||||
# ,[x y z]),1),2)) - sum(gammaln(1+SUMCOUNTS(pops,:)),2) - priorTerm;
|
||||
|
||||
|
||||
# %-----------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function npops = poistaTyhjatPopulaatiot(npops)
|
||||
# % Poistaa tyhjentyneet populaatiot COUNTS:ista ja
|
||||
# % SUMCOUNTS:ista. P<>ivitt<74><74> npops:in ja PARTITION:in.
|
||||
|
||||
# global COUNTS;
|
||||
# global SUMCOUNTS;
|
||||
# global PARTITION;
|
||||
|
||||
# notEmpty = find(any(SUMCOUNTS,2));
|
||||
# COUNTS = COUNTS(:,:,notEmpty);
|
||||
# SUMCOUNTS = SUMCOUNTS(notEmpty,:);
|
||||
|
||||
# for n=1:length(notEmpty)
|
||||
# apu = find(PARTITION==notEmpty(n));
|
||||
# PARTITION(apu)=n;
|
||||
# end
|
||||
# npops = length(notEmpty);
|
||||
|
||||
|
||||
# %----------------------------------------------------------------------------------
|
||||
# %Seuraavat kolme funktiota liittyvat alkupartition muodostamiseen.
|
||||
|
||||
# function initial_partition=admixture_initialization(data_matrix,nclusters,Z)
|
||||
# size_data=size(data_matrix);
|
||||
# nloci=size_data(2)-1;
|
||||
# n=max(data_matrix(:,end));
|
||||
# T=cluster_own(Z,nclusters);
|
||||
# initial_partition=zeros(size_data(1),1);
|
||||
# for i=1:n
|
||||
# kori=T(i);
|
||||
# here=find(data_matrix(:,end)==i);
|
||||
# for j=1:length(here)
|
||||
# initial_partition(here(j),1)=kori;
|
||||
# end
|
||||
# end
|
||||
|
||||
# function T = cluster_own(Z,nclust)
|
||||
# true=logical(1);
|
||||
# false=logical(0);
|
||||
# maxclust = nclust;
|
||||
# % Start of algorithm
|
||||
# m = size(Z,1)+1;
|
||||
# T = zeros(m,1);
|
||||
# % maximum number of clusters based on inconsistency
|
||||
# if m <= maxclust
|
||||
# T = (1:m)';
|
||||
# elseif maxclust==1
|
||||
# T = ones(m,1);
|
||||
# else
|
||||
# clsnum = 1;
|
||||
# for k = (m-maxclust+1):(m-1)
|
||||
# i = Z(k,1); % left tree
|
||||
# if i <= m % original node, no leafs
|
||||
# T(i) = clsnum;
|
||||
# clsnum = clsnum + 1;
|
||||
# elseif i < (2*m-maxclust+1) % created before cutoff, search down the tree
|
||||
# T = clusternum(Z, T, i-m, clsnum);
|
||||
# clsnum = clsnum + 1;
|
||||
# end
|
||||
# i = Z(k,2); % right tree
|
||||
# if i <= m % original node, no leafs
|
||||
# T(i) = clsnum;
|
||||
# clsnum = clsnum + 1;
|
||||
# elseif i < (2*m-maxclust+1) % created before cutoff, search down the tree
|
||||
# T = clusternum(Z, T, i-m, clsnum);
|
||||
# clsnum = clsnum + 1;
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# %----------------------------------------------------------------------------------
|
||||
|
||||
# function T = clusternum(X, T, k, c)
|
||||
# m = size(X,1)+1;
|
||||
|
|
@ -885,79 +463,4 @@ greedyMix <- function(
|
|||
# end
|
||||
# end
|
||||
|
||||
# Z=linkage(distances');
|
||||
|
||||
|
||||
|
||||
# %----------------------------------------------------------------------------------------
|
||||
|
||||
# function logml=computeLogml(counts, sumcounts, noalle, data, rowsFromInd)
|
||||
# nloci = size(counts,2);
|
||||
# npops = size(counts,3);
|
||||
# adjnoalle = zeros(max(noalle),nloci);
|
||||
# for j=1:nloci
|
||||
# adjnoalle(1:noalle(j),j)=noalle(j);
|
||||
# if (noalle(j)<max(noalle))
|
||||
# adjnoalle(noalle(j)+1:end,j)=1;
|
||||
# end
|
||||
# end
|
||||
|
||||
# %logml2 = sum(sum(sum(gammaln(counts+repmat(adjprior,[1 1 npops]))))) ...
|
||||
# % - npops*sum(sum(gammaln(adjprior))) - ...
|
||||
# % sum(sum(gammaln(1+sumcounts)));
|
||||
# %logml = logml2;
|
||||
|
||||
# global GAMMA_LN;
|
||||
# rowsInG = size(data,1)+rowsFromInd;
|
||||
|
||||
# logml = sum(sum(sum(GAMMA_LN(counts+1 + repmat(rowsInG*(adjnoalle-1),[1 1 npops]))))) ...
|
||||
# - npops*sum(sum(GAMMA_LN(1, adjnoalle))) ...
|
||||
# -sum(sum(GAMMA_LN(sumcounts+1,1)));
|
||||
|
||||
|
||||
# %--------------------------------------------------------------------------
|
||||
|
||||
|
||||
# function initializeGammaln(ninds, rowsFromInd, maxAlleles)
|
||||
# %Alustaa GAMMALN muuttujan s.e. GAMMALN(i,j)=gammaln((i-1) + 1/j)
|
||||
# global GAMMA_LN;
|
||||
# GAMMA_LN = zeros((1+ninds)*rowsFromInd, maxAlleles);
|
||||
# for i=1:(ninds+1)*rowsFromInd
|
||||
# for j=1:maxAlleles
|
||||
# GAMMA_LN(i,j)=gammaln((i-1) + 1/j);
|
||||
# end
|
||||
# end
|
||||
|
||||
# %---------------------------------------------------------------
|
||||
|
||||
# function dist2 = laskeOsaDist(inds2, dist, ninds)
|
||||
# % Muodostaa dist vektorista osavektorin, joka sis<69>lt<6C><74> yksil<69>iden inds2
|
||||
# % v<>liset et<65>isyydet. ninds=kaikkien yksil<69>iden lukum<75><6D>r?
|
||||
|
||||
# ninds2 = length(inds2);
|
||||
# apu = zeros(nchoosek(ninds2,2),2);
|
||||
# rivi = 1;
|
||||
# for i=1:ninds2-1
|
||||
# for j=i+1:ninds2
|
||||
# apu(rivi, 1) = inds2(i);
|
||||
# apu(rivi, 2) = inds2(j);
|
||||
# rivi = rivi+1;
|
||||
# end
|
||||
# end
|
||||
# apu = (apu(:,1)-1).*ninds - apu(:,1) ./ 2 .* (apu(:,1)-1) + (apu(:,2)-apu(:,1));
|
||||
# dist2 = dist(apu);
|
||||
|
||||
# %--------------------------------------------------------------------------
|
||||
|
||||
# function [emptyPop, pops] = findEmptyPop(npops)
|
||||
# % Palauttaa ensimm<6D>isen tyhj<68>n populaation indeksin. Jos tyhji?
|
||||
# % populaatioita ei ole, palauttaa -1:n.
|
||||
|
||||
# global PARTITION;
|
||||
# pops = unique(PARTITION)';
|
||||
# if (length(pops) ==npops)
|
||||
# emptyPop = -1;
|
||||
# else
|
||||
# popDiff = diff([0 pops npops+1]);
|
||||
# emptyPop = min(find(popDiff > 1));
|
||||
# end
|
||||
# Z=linkage(distances');
|
||||
22
R/matlab2r.R
22
R/matlab2r.R
|
|
@ -7,16 +7,32 @@
|
|||
#' @importFrom utils write.table
|
||||
#' @export
|
||||
matlab2r <- function(filename, saveOutput = FALSE) {
|
||||
# Verification
|
||||
|
||||
# ======================================================== #
|
||||
# Verification #
|
||||
# ======================================================== #
|
||||
if (!file.exists(filename)) stop("File not found")
|
||||
# Reading file into R
|
||||
|
||||
# ======================================================== #
|
||||
# Reading file into R #
|
||||
# ======================================================== #
|
||||
txt <- readLines(filename)
|
||||
# Replacing text
|
||||
|
||||
# ======================================================== #
|
||||
# Replacing text #
|
||||
# ======================================================== #
|
||||
|
||||
# Function header ---------------------------------------- #
|
||||
txt <- gsub(
|
||||
pattern = "function (.+)\\s+=\\s*(.+)\\((.+)\\)",
|
||||
replacement = "\\2 <- function(\\3) { return(\\1)",
|
||||
x = txt
|
||||
)
|
||||
txt <- gsub(
|
||||
pattern = "function (.+)\\((.+)\\)",
|
||||
replacement = "\\1 <- function(\\2) {",
|
||||
x = txt
|
||||
)
|
||||
# txt <- gsub("\\%\\s*(\\w+)", "# \\1", txt)
|
||||
txt <- gsub(";", "", txt)
|
||||
txt <- gsub("for (.+)=(.+)", "for (\\1 in \\2) {", txt)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue