1
function res=mrses_hw_distance(A,B,k,Niter,Ncycle,distmod,block)
18
error('As minimum two matrixes needed for MRSES');
21
error('Too much parameters');
24
sa=size(A);sb=size(B);
28
error('Features dimension mismatch');
33
%optki=zeros(Ncycle,k);
36
mrses_hw(ctx, 1, k, block, single(A), single(B), distmod);
38
for icycle=0:block:(Ncycle-1)
39
block_size = min(block, Ncycle - icycle);
40
% SELECT k GENES {ki} FOR TEST AND EXCLUDE THEM FROM ALL GENES {ke}
42
ki=int16([]); ke=int16([]);
44
tt=randperm(genes);% randomizing genes
46
ki(:,i)=tt(1:k); % selecting first k
47
ke(:,i)=tt(k+1:end); % the rest unuzed
50
cur_dist = mrses_hw(ctx, 10, block_size, ki);
54
check_dist(i) = bmc(A(:,ki(:,i)),B(:,ki(:,i)), distmod);
56
dist_diff = abs(cur_dist - check_dist);
57
allowed = abs(check_dist)/10000;
58
find ( dist_diff > allowed)
62
xki=ceil(rand(1,block_size)*k); % selecting random gen from selected
63
xke=ceil(rand(1,block_size)*(genes-k)); % selected random gen from non-selected
65
idx_i = sub2ind(size(ki), xki, 1:block_size);
66
idx_e = sub2ind(size(ke), xke, 1:block_size);
72
dist = mrses_hw(ctx, 10, block_size, ki);
76
check_dist(i)=bmc(A(:,ki(:,i)),B(:,ki(:,i)),distmod); % compute distance between A and B with currently selected genes
78
find(dist ~= check_dist);
79
dist_diff = abs(dist - check_dist);
80
allowed = abs(dist)/10000;
81
find ( dist_diff > allowed)
84
bad = find(dist < cur_dist);
92
cur_dist = max(dist, cur_dist);
94
optki(:,(icycle+1):(icycle+block_size))=ki; % save finally selected genes
98
optki=reshape(optki,1,[]);
99
[n,g]=hist(optki,1:genes);
101
res=flipud(sortrows(H'));
104
function dist=bmc(x1,x2,distmod)
110
rcorr=2.*log(det(c)./sqrt(det(c1).*det(c2)));
116
rmahal=((m2-m1)/c)*(m2-m1)';
120
dist = rmahal./8+rcorr./4;
128
function c = cov1(x, m)
129
[rows, cols] = size(x);
133
nX = x - ones([rows,1]) * mean(x);
135
nX = x - ones([rows,1]) * m';