makeNetAndAnalysis

PURPOSE ^

MAKENETANDANALYSIS generate many kind of networks and do level analysis.

SYNOPSIS ^

function [ meanNetworks, allNetworks, stdNetworks ] = makeNetAndAnalysis( inputNetwork, parameter )

DESCRIPTION ^

 MAKENETANDANALYSIS generate many kind of networks and do level analysis.

   [ meanNetworks ] = makeNetAndAnalysis( inputNetwork, parameter )
   This function will generate random network, ring type small world network,
   distant input-output ring type small world network, ring type regular
   network and use these networks do levelAnalysis.

   Input:
       inputNetwork: a input network structure
       parameter: a structure containg parameter to analysis
           parameter.MAX_LEVEL: max level of level analysis
           parameter.REPEAT_TIMES: number of relization
           parameter.STRIDE_SEED_NUMBER: stride between seed number
           parameter.REWIRE_PROB_RING: rewiring probability of small world

   Output:
       meanNetworks: mean result of each kind of network
       allNetworks: all relization networks
       stdNetworks: std of each kinds of networks between relization

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ meanNetworks, allNetworks, stdNetworks ] = makeNetAndAnalysis( inputNetwork, parameter )
0002 % MAKENETANDANALYSIS generate many kind of networks and do level analysis.
0003 %
0004 %   [ meanNetworks ] = makeNetAndAnalysis( inputNetwork, parameter )
0005 %   This function will generate random network, ring type small world network,
0006 %   distant input-output ring type small world network, ring type regular
0007 %   network and use these networks do levelAnalysis.
0008 %
0009 %   Input:
0010 %       inputNetwork: a input network structure
0011 %       parameter: a structure containg parameter to analysis
0012 %           parameter.MAX_LEVEL: max level of level analysis
0013 %           parameter.REPEAT_TIMES: number of relization
0014 %           parameter.STRIDE_SEED_NUMBER: stride between seed number
0015 %           parameter.REWIRE_PROB_RING: rewiring probability of small world
0016 %
0017 %   Output:
0018 %       meanNetworks: mean result of each kind of network
0019 %       allNetworks: all relization networks
0020 %       stdNetworks: std of each kinds of networks between relization
0021 
0022 %   ---------
0023 %   Yen-Nan Lin, NTHU, 2010-2014, Matlab 2012a
0024 
0025 % parameter for analysis
0026 loadStruct(parameter, 'caller');
0027 
0028 % compute number of edges information of inputNetwork
0029 inputNetwork.NumConnect = full(sum(sum(inputNetwork.matrix)));
0030 inputNetwork.meanNumEdge = full(mean(sum(inputNetwork.matrix')));
0031 
0032 % random network analysis
0033 randProb = inputNetwork.NumConnect / (inputNetwork.size^2 - inputNetwork.size);
0034 randNetwork = cell(1, REPEAT_TIMES);
0035 for iTime = 1:REPEAT_TIMES
0036     seedNumber = iTime * STRIDE_SEED_NUMBER;
0037     randNetwork{iTime} = randomNetwork(inputNetwork.size, randProb, seedNumber);
0038     randNetwork{iTime} = setIO(randNetwork{iTime}, ...
0039         inputNetwork.inputNumber, inputNetwork.outputNumber);
0040     randNetwork{iTime} = levelAnalysis(randNetwork{iTime}, MAX_LEVEL);
0041 end
0042 % compute mean result of analysis
0043 meanRandNet = meanFieldInCells(randNetwork);
0044 stdRandNet = stdFieldInCells(randNetwork);
0045 meanNetworks.meanRandNet = meanRandNet;
0046 stdNetworks.stdRandNet = stdRandNet;
0047 if nargout > 1
0048     allNetworks.randNetwork = randNetwork;
0049 end
0050 
0051 
0052 % ring type small world network analysis
0053 smallRingNet = cell(1, REPEAT_TIMES);
0054 for iTime = 1:REPEAT_TIMES
0055     seedNumber = iTime * STRIDE_SEED_NUMBER;
0056     smallRingNet{iTime} = smallWorldNetwork(inputNetwork.size, ...
0057         REWIRE_PROB_RING, seedNumber, inputNetwork.meanNumEdge);
0058     smallRingNet{iTime} = setIO(smallRingNet{iTime}, ...
0059         inputNetwork.inputNumber, inputNetwork.outputNumber);
0060     smallRingNet{iTime} = levelAnalysis(smallRingNet{iTime}, MAX_LEVEL);
0061 end
0062 % compute mean result of analysis
0063 meanRingNet = meanFieldInCells(smallRingNet);
0064 stdRingNet = stdFieldInCells(smallRingNet);
0065 meanNetworks.meanRingNet = meanRingNet;
0066 stdNetworks.stdRingNet = stdRingNet;
0067 if nargout > 1
0068     allNetworks.smallRingNet = smallRingNet;
0069 end
0070 
0071 
0072 % distant IO with ring type small world network analysis
0073 smallRingDistNet = cell(1, REPEAT_TIMES);
0074 for iTime = 1:REPEAT_TIMES
0075     seedNumber = iTime * STRIDE_SEED_NUMBER;
0076     smallRingDistNet{iTime} = smallWorldNetwork(inputNetwork.size, ...
0077         REWIRE_PROB_RING, seedNumber, inputNetwork.meanNumEdge);
0078     smallRingDistNet{iTime} = setIO(smallRingDistNet{iTime}, ...
0079         inputNetwork.inputNumber, inputNetwork.outputNumber, 'distant');
0080     smallRingDistNet{iTime} = levelAnalysis(smallRingDistNet{iTime}, MAX_LEVEL);
0081 end
0082 % compute mean result of analysis
0083 meanRingDistNet = meanFieldInCells(smallRingDistNet);
0084 stdRingDistNet = stdFieldInCells(smallRingDistNet);
0085 meanNetworks.meanRingDistNet = meanRingDistNet;
0086 stdNetworks.stdRingDistNet = stdRingDistNet;
0087 if nargout > 1
0088     allNetworks.smallRingDistNet = smallRingDistNet;
0089 end
0090 
0091 % ring type regular network analysis
0092 regularRingNet = cell(1, REPEAT_TIMES);
0093 for iTime = 1:REPEAT_TIMES
0094     seedNumber = iTime * STRIDE_SEED_NUMBER;
0095     regularRingNet{iTime} = smallWorldNetwork(inputNetwork.size, ...
0096         0, seedNumber, inputNetwork.meanNumEdge);
0097     regularRingNet{iTime} = setIO(regularRingNet{iTime}, ...
0098         inputNetwork.inputNumber, inputNetwork.outputNumber);
0099     regularRingNet{iTime} = levelAnalysis(regularRingNet{iTime}, MAX_LEVEL);
0100 end
0101 % compute mean result of analysis
0102 meanRegularNet = meanFieldInCells(regularRingNet);
0103 stdRegularNet = stdFieldInCells(regularRingNet);
0104 meanNetworks.meanRegularNet = meanRegularNet;
0105 stdNetworks.stdRegularNet = stdRegularNet;
0106 if nargout > 1
0107     allNetworks.regularRingNet = regularRingNet;
0108 end
0109 end

Generated on Thu 30-Jan-2014 00:00:07 by m2html © 2005