Added source Matlab code for reference
This commit is contained in:
parent
b8af977117
commit
b5d99903d2
186 changed files with 61405 additions and 1 deletions
82
matlab/spatial/private/calcLogmlChanges.m
Normal file
82
matlab/spatial/private/calcLogmlChanges.m
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
function changes = calcLogmlChanges(inds, cqData, nCqCodes, spData, nSpCodes, locCliques, locSeparators, logml)
|
||||
% compute the logml change if the given inds are moved to another cluster
|
||||
% the input inds are supposed to come from the same cluster
|
||||
% changes is a npops*1 vector
|
||||
% Lu Cheng, 15.12.2012
|
||||
|
||||
global CQ_COUNTS; global SUM_CQ_COUNTS;
|
||||
global SP_COUNTS; global SUM_SP_COUNTS;
|
||||
global PARTITION;
|
||||
|
||||
global LOC_CQ_COUNTS;
|
||||
global LOC_SP_COUNTS;
|
||||
|
||||
npops = size(CQ_COUNTS,3);
|
||||
changes = zeros(npops,1);
|
||||
indsToBeMoved = inds;
|
||||
|
||||
if isempty(indsToBeMoved), return, end
|
||||
|
||||
i1 = PARTITION(indsToBeMoved(1));
|
||||
[diffCqCounts diffCqSumCounts]= computeDiffInCounts(indsToBeMoved, cqData, nCqCodes);
|
||||
[diffSpCounts diffSpSumCounts]= computeDiffInCounts(indsToBeMoved, spData, nSpCodes);
|
||||
|
||||
diffLocCqCounts = computeDiffInCliqCounts(locCliques, indsToBeMoved);
|
||||
diffLocSpCounts = computeDiffInCliqCounts(locSeparators, indsToBeMoved);
|
||||
|
||||
CQ_COUNTS(:,:,i1) = CQ_COUNTS(:,:,i1) - diffCqCounts;
|
||||
SP_COUNTS(:,:,i1) = SP_COUNTS(:,:,i1) - diffSpCounts;
|
||||
|
||||
SUM_CQ_COUNTS(:,i1) = SUM_CQ_COUNTS(:,i1) - diffCqSumCounts;
|
||||
SUM_SP_COUNTS(:,i1) = SUM_SP_COUNTS(:,i1) - diffSpSumCounts;
|
||||
|
||||
LOC_CQ_COUNTS(:,i1) = LOC_CQ_COUNTS(:,i1) - diffLocCqCounts;
|
||||
LOC_SP_COUNTS(:,i1) = LOC_SP_COUNTS(:,i1) - diffLocSpCounts;
|
||||
|
||||
% PARTITION(inds) = -1;
|
||||
updateLogmlTable(i1);
|
||||
|
||||
for i2 = 1:npops
|
||||
if i2 ~= i1
|
||||
CQ_COUNTS(:,:,i2) = CQ_COUNTS(:,:,i2) + diffCqCounts;
|
||||
SP_COUNTS(:,:,i2) = SP_COUNTS(:,:,i2) + diffSpCounts;
|
||||
|
||||
SUM_CQ_COUNTS(:,i2) = SUM_CQ_COUNTS(:,i2) + diffCqSumCounts;
|
||||
SUM_SP_COUNTS(:,i2) = SUM_SP_COUNTS(:,i2) + diffSpSumCounts;
|
||||
|
||||
LOC_CQ_COUNTS(:,i2) = LOC_CQ_COUNTS(:,i2) + diffLocCqCounts;
|
||||
LOC_SP_COUNTS(:,i2) = LOC_SP_COUNTS(:,i2) + diffLocSpCounts;
|
||||
|
||||
% PARTITION(inds) = i2;
|
||||
updateLogmlTable(i2);
|
||||
logml_new = computeTotalLogml();
|
||||
changes(i2) = logml_new - logml;
|
||||
|
||||
CQ_COUNTS(:,:,i2) = CQ_COUNTS(:,:,i2) - diffCqCounts;
|
||||
SUM_CQ_COUNTS(:,i2) = SUM_CQ_COUNTS(:,i2) - diffCqSumCounts;
|
||||
|
||||
SP_COUNTS(:,:,i2) = SP_COUNTS(:,:,i2) - diffSpCounts;
|
||||
SUM_SP_COUNTS(:,i2) = SUM_SP_COUNTS(:,i2) - diffSpSumCounts;
|
||||
|
||||
LOC_CQ_COUNTS(:,i2) = LOC_CQ_COUNTS(:,i2) - diffLocCqCounts;
|
||||
LOC_SP_COUNTS(:,i2) = LOC_SP_COUNTS(:,i2) - diffLocSpCounts;
|
||||
|
||||
% PARTITION(inds) = -1;
|
||||
updateLogmlTable(i2);
|
||||
end
|
||||
end
|
||||
|
||||
CQ_COUNTS(:,:,i1) = CQ_COUNTS(:,:,i1) + diffCqCounts;
|
||||
SUM_CQ_COUNTS(:,i1) = SUM_CQ_COUNTS(:,i1) + diffCqSumCounts;
|
||||
|
||||
SP_COUNTS(:,:,i1) = SP_COUNTS(:,:,i1) + diffSpCounts;
|
||||
SUM_SP_COUNTS(:,i1) = SUM_SP_COUNTS(:,i1) + diffSpSumCounts;
|
||||
|
||||
LOC_CQ_COUNTS(:,i1) = LOC_CQ_COUNTS(:,i1) + diffLocCqCounts;
|
||||
LOC_SP_COUNTS(:,i1) = LOC_SP_COUNTS(:,i1) + diffLocSpCounts;
|
||||
|
||||
% PARTITION(inds) = i1;
|
||||
updateLogmlTable(i1);
|
||||
|
||||
|
||||
%---------------------------------------------------------------------
|
||||
Loading…
Add table
Add a link
Reference in a new issue