0001 function [key,keypair] = get_area_key(conn_file,areafile,Nmin)
0002
0003
0004
0005
0006
0007
0008
0009 if nargin < 3, Nmin = 1; end;
0010
0011 load(conn_file);
0012
0013
0014
0015 keyset = vb_get_keyset_area(areafile);
0016 Narea = length(keyset);
0017
0018 NP = length(Index_to);
0019
0020 fprintf('number of connections = %d\n',NP)
0021
0022 alist = zeros(NP,2);
0023 Ndisp = 100;
0024
0025 Areas = [];
0026 for n=1:Narea
0027 Areas = [Areas; vb_get_area(areafile, keyset{n})];
0028 end
0029
0030 for i=1:NP
0031 for n=1:Narea
0032 flg1 = any(Areas(n).Iextract==Index_to(i));
0033 flg2 = any(Areas(n).Iextract==Index_from(i));
0034
0035 if flg1==1 , alist(i,1) = n; end
0036 if flg2==1 , alist(i,2) = n;end
0037 end
0038 fprintf('.')
0039 if rem(i,Ndisp)==0, fprintf('\n'); end
0040 end
0041
0042
0043 [alist, jj] = sortrows(alist);
0044
0045 adif = alist(1:NP-1,:)-alist(2:NP,:);
0046
0047
0048 ix = find( sum(abs(adif),2) > 0);
0049
0050 ix = [1; ix+1];
0051
0052
0053 apair = alist(ix,:);
0054
0055 ipair = jj(ix);
0056
0057
0058 npair = [ix(2:end) ; NP+1] - ix;
0059
0060
0061 ii = find( sum(apair > 0,2) == 2);
0062
0063 [tmp, jx] = sort(npair(ii), 1, 'descend');
0064
0065
0066 keypair.num = npair(ii(jx));
0067 keypair.index = ipair(ii(jx));
0068 keypair.to = {keyset{apair(ii(jx),1)}};
0069 keypair.from = {keyset{apair(ii(jx),2)}};
0070
0071
0072 alist1 = sort(alist(:));
0073 adif = alist1(1:end-1)-alist1(2:end);
0074
0075 jx = find( abs(adif) > 0);
0076
0077 jx = [1; jx+1];
0078
0079 num = [jx(2:end) ; 2*NP+1] - jx;
0080 alist2 = alist1(jx);
0081 kx = find(alist2 > 0);
0082
0083 key = {keyset{alist2(kx)}};
0084 num = num(kx);
0085
0086 alist3 = sort(unique(alist1));
0087
0088 err = sum(abs(alist3 - alist1(jx)));
0089
0090 if err > 0, error('unique algorithm error'); end;
0091
0092 [num,kx] = sort(num, 1, 'descend');
0093 key = {key{kx}};
0094
0095 fname = 'pair_area.txt';
0096 fprintf('---- Output area list file: %s\n',fname)
0097
0098 fid = fopen(fname,'w');
0099
0100 if fid==-1,error('can not open file'); end;
0101
0102 for n=1:length(key)
0103 fprintf(fid,'%s: num=%d\n',key{n},num(n));
0104 end
0105
0106 fprintf(fid,'\n\n---- pair of area\n\n');
0107
0108 Npair = length(keypair.num);
0109
0110 for n=1:Npair
0111 fprintf(fid,'num = %d, ', keypair.num(n));
0112 fprintf(fid,'from = %s ,',keypair.from{n});
0113 fprintf(fid,'to = %s\n',keypair.to{n});
0114 end
0115
0116 fclose(fid);
0117
0118 kk = find(num >= Nmin);
0119 key = {key{kk}};
0120