diff toolboxes/FullBNT-1.0.7/docs/adj2pajek2.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/FullBNT-1.0.7/docs/adj2pajek2.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,86 @@
+% ADJ2PAJEK2 Converts an adjacency matrix representation to a Pajek .net read format
+% adj2pajek2(adj, filename-stem, 'argname1', argval1, ...)
+%
+% Set A(i,j)=-1 to get a dotted line
+%
+% Optional arguments
+%
+%  nodeNames - cell array, defaults to {'v1','v2,...}
+%  shapes - cell array, defaults to {'ellipse','ellipse',...}
+%     Choices are 'ellipse', 'box', 'diamond', 'triangle', 'cross', 'empty'
+%  partition - vector of integers, defaults to [1 1 ... 1]
+%    This will automatically color-code the vertices by their partition
+%
+% Run pajek (available from http://vlado.fmf.uni-lj.si/pub/networks/pajek/)
+% Choose File->Network->Read from the menu
+% Then press ctrl-G (Draw->Draw)
+% Optional: additionally load the partition file then press ctrl-P (Draw->partition)
+%
+% Examples
+% A=zeros(5,5);A(1,2)=-1;A(2,1)=-1;A(1,[3 4])=1;A(2,5)=1;
+% adj2pajek2(A,'foo') % makes foo.net
+%
+% adj2pajek2(A,'foo','partition',[1 1 2 2 2]) % makes foo.net and foo.clu
+% 
+% adj2pajek2(A,'foo',...
+%            'nodeNames',{'TF1','TF2','G1','G2','G3'},...
+%            'shapes',{'box','box','ellipse','ellipse','ellipse'});
+%
+%
+% The file format is documented on p68 of the pajek manual
+% and good examples are on p58, p72
+%
+% Written by Kevin Murphy, 30 May 2007
+% Based on adj2pajek by Gergana Bounova
+% http://stuff.mit.edu/people/gerganaa/www/matlab/routines.html
+% Fixes a small bug (opens files as 'wt' instead of 'w' so it works in windows)
+% Also, simplified her code and added some features.
+
+function []=adj2pajek2(adj,filename, varargin)
+
+N = length(adj);
+for i=1:N
+  nodeNames{i} = strcat('"v',num2str(i),'"');
+  shapes{i} = 'ellipse';
+end
+
+[nodeNames, shapes, partition] = process_options(varargin, ...
+    'nodeNames', nodeNames, 'shapes', shapes, 'partition', []);
+
+if ~isempty(partition)
+  fid = fopen(sprintf('%s.clu', filename),'wt','native'); 
+  fprintf(fid,'*Vertices  %6i\n',N);
+  for i=1:N
+    fprintf(fid, '%d\n', partition(i));
+  end
+  fclose(fid);
+end
+
+fid = fopen(sprintf('%s.net', filename),'wt','native'); 
+
+fprintf(fid,'*Vertices  %6i\n',N);
+for i=1:N
+  fprintf(fid,'%3i %s %s\n', i, nodeNames{i}, shapes{i});
+end
+
+%fprintf(fid,'*Edges\n');
+fprintf(fid,'*Arcs\n'); % directed
+for i=1:N
+  for j=1:N
+    if adj(i,j) ~= 0
+      fprintf(fid,' %4i   %4i   %2i\n',i,j,adj(i,j));
+    end
+  end
+end
+fclose(fid)
+
+
+if 0
+adj2pajek2(A,'foo',...
+            'nodeNames',{'TF1','TF2','G1','G2','G3'},...
+            'shapes',{'box','box','ellipse','ellipse','ellipse'});
+
+N = 100; part = ones(1,N); part(intersect(reg.tfidxTest,1:N))=2;
+G = reg.Atest(1:N, 1:N)';
+adj2pajek2(G, 'Ecoli100', 'partition', part)
+end