annotate toolboxes/FullBNT-1.0.7/docs/adj2pajek2.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 % ADJ2PAJEK2 Converts an adjacency matrix representation to a Pajek .net read format
Daniel@0 2 % adj2pajek2(adj, filename-stem, 'argname1', argval1, ...)
Daniel@0 3 %
Daniel@0 4 % Set A(i,j)=-1 to get a dotted line
Daniel@0 5 %
Daniel@0 6 % Optional arguments
Daniel@0 7 %
Daniel@0 8 % nodeNames - cell array, defaults to {'v1','v2,...}
Daniel@0 9 % shapes - cell array, defaults to {'ellipse','ellipse',...}
Daniel@0 10 % Choices are 'ellipse', 'box', 'diamond', 'triangle', 'cross', 'empty'
Daniel@0 11 % partition - vector of integers, defaults to [1 1 ... 1]
Daniel@0 12 % This will automatically color-code the vertices by their partition
Daniel@0 13 %
Daniel@0 14 % Run pajek (available from http://vlado.fmf.uni-lj.si/pub/networks/pajek/)
Daniel@0 15 % Choose File->Network->Read from the menu
Daniel@0 16 % Then press ctrl-G (Draw->Draw)
Daniel@0 17 % Optional: additionally load the partition file then press ctrl-P (Draw->partition)
Daniel@0 18 %
Daniel@0 19 % Examples
Daniel@0 20 % A=zeros(5,5);A(1,2)=-1;A(2,1)=-1;A(1,[3 4])=1;A(2,5)=1;
Daniel@0 21 % adj2pajek2(A,'foo') % makes foo.net
Daniel@0 22 %
Daniel@0 23 % adj2pajek2(A,'foo','partition',[1 1 2 2 2]) % makes foo.net and foo.clu
Daniel@0 24 %
Daniel@0 25 % adj2pajek2(A,'foo',...
Daniel@0 26 % 'nodeNames',{'TF1','TF2','G1','G2','G3'},...
Daniel@0 27 % 'shapes',{'box','box','ellipse','ellipse','ellipse'});
Daniel@0 28 %
Daniel@0 29 %
Daniel@0 30 % The file format is documented on p68 of the pajek manual
Daniel@0 31 % and good examples are on p58, p72
Daniel@0 32 %
Daniel@0 33 % Written by Kevin Murphy, 30 May 2007
Daniel@0 34 % Based on adj2pajek by Gergana Bounova
Daniel@0 35 % http://stuff.mit.edu/people/gerganaa/www/matlab/routines.html
Daniel@0 36 % Fixes a small bug (opens files as 'wt' instead of 'w' so it works in windows)
Daniel@0 37 % Also, simplified her code and added some features.
Daniel@0 38
Daniel@0 39 function []=adj2pajek2(adj,filename, varargin)
Daniel@0 40
Daniel@0 41 N = length(adj);
Daniel@0 42 for i=1:N
Daniel@0 43 nodeNames{i} = strcat('"v',num2str(i),'"');
Daniel@0 44 shapes{i} = 'ellipse';
Daniel@0 45 end
Daniel@0 46
Daniel@0 47 [nodeNames, shapes, partition] = process_options(varargin, ...
Daniel@0 48 'nodeNames', nodeNames, 'shapes', shapes, 'partition', []);
Daniel@0 49
Daniel@0 50 if ~isempty(partition)
Daniel@0 51 fid = fopen(sprintf('%s.clu', filename),'wt','native');
Daniel@0 52 fprintf(fid,'*Vertices %6i\n',N);
Daniel@0 53 for i=1:N
Daniel@0 54 fprintf(fid, '%d\n', partition(i));
Daniel@0 55 end
Daniel@0 56 fclose(fid);
Daniel@0 57 end
Daniel@0 58
Daniel@0 59 fid = fopen(sprintf('%s.net', filename),'wt','native');
Daniel@0 60
Daniel@0 61 fprintf(fid,'*Vertices %6i\n',N);
Daniel@0 62 for i=1:N
Daniel@0 63 fprintf(fid,'%3i %s %s\n', i, nodeNames{i}, shapes{i});
Daniel@0 64 end
Daniel@0 65
Daniel@0 66 %fprintf(fid,'*Edges\n');
Daniel@0 67 fprintf(fid,'*Arcs\n'); % directed
Daniel@0 68 for i=1:N
Daniel@0 69 for j=1:N
Daniel@0 70 if adj(i,j) ~= 0
Daniel@0 71 fprintf(fid,' %4i %4i %2i\n',i,j,adj(i,j));
Daniel@0 72 end
Daniel@0 73 end
Daniel@0 74 end
Daniel@0 75 fclose(fid)
Daniel@0 76
Daniel@0 77
Daniel@0 78 if 0
Daniel@0 79 adj2pajek2(A,'foo',...
Daniel@0 80 'nodeNames',{'TF1','TF2','G1','G2','G3'},...
Daniel@0 81 'shapes',{'box','box','ellipse','ellipse','ellipse'});
Daniel@0 82
Daniel@0 83 N = 100; part = ones(1,N); part(intersect(reg.tfidxTest,1:N))=2;
Daniel@0 84 G = reg.Atest(1:N, 1:N)';
Daniel@0 85 adj2pajek2(G, 'Ecoli100', 'partition', part)
Daniel@0 86 end