Home > vbmeg > functions > tool_box > dynamics_movie > test_fig > basic_tool > get_area_key.m

get_area_key

PURPOSE ^

get_area_key from conn_file

SYNOPSIS ^

function [key,keypair] = get_area_key(conn_file,areafile,Nmin)

DESCRIPTION ^

 get_area_key from conn_file

 2014-11-10 Masa-aki Sato

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function    [key,keypair] = get_area_key(conn_file,areafile,Nmin)
0002 % get_area_key from conn_file
0003 %
0004 % 2014-11-10 Masa-aki Sato
0005 %
0006 % Copyright (C) 2011, ATR All Rights Reserved.
0007 % License : New BSD License(see VBMEG_LICENSE.txt)
0008 
0009 if nargin < 3, Nmin = 1; end;
0010 
0011 load(conn_file);
0012 % Index_to :結合の終点となる頂点でのインデックス情報
0013 % Index_from:結合の起点となる頂点でのインデックス情報
0014 
0015 keyset = vb_get_keyset_area(areafile);
0016 Narea = length(keyset);
0017 
0018 NP = length(Index_to);
0019 % NP = 10;
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 % find area index for pair
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 %--- find unique pair
0043 [alist, jj] = sortrows(alist);
0044 % diff of rows
0045 adif = alist(1:NP-1,:)-alist(2:NP,:);
0046 % if zero, the same index is continued
0047 % find changed row for unique components
0048 ix = find( sum(abs(adif),2) > 0);
0049 % first row always selected
0050 ix = [1; ix+1];
0051 
0052 % pair of area index
0053 apair = alist(ix,:);
0054 % connections list index
0055 ipair = jj(ix);
0056 
0057 % number of connections for area pair
0058 npair = [ix(2:end) ; NP+1] - ix;
0059 
0060 % select non-empty ibdex
0061 ii = find( sum(apair > 0,2) == 2);
0062 
0063 [tmp, jx] = sort(npair(ii), 1, 'descend');
0064 
0065 %--- area key for pair of connection vertex
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 %--- unique area list
0072 alist1 = sort(alist(:));
0073 adif = alist1(1:end-1)-alist1(2:end);
0074 % find changed indx for unique components
0075 jx = find( abs(adif) > 0);
0076 
0077 jx = [1; jx+1];
0078 % number of connections for area
0079 num = [jx(2:end) ; 2*NP+1] - jx;
0080 alist2 = alist1(jx);
0081 kx = find(alist2 > 0);
0082 % unique area key list
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 %

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005