0001 function [ network ] = sortByModule( network )
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 FIELD_NAME_MODULE_ID = 'moduleId';
0019
0020
0021 moduleIdEachNode = modularity_dir(full(network.matrix));
0022
0023 inputIx = findList(network.label, network.inputList);
0024 outputIx = findList(network.label, network.outputList);
0025 interList = setdiff(network.label, [network.inputList, network.outputList]);
0026 interIx = findList(network.label, interList);
0027
0028 [sortInputModuleId, sortInputIx] = sort(moduleIdEachNode(inputIx), 'ascend');
0029 [sortOutputModuleId, sortOutputIx] = sort(moduleIdEachNode(outputIx), 'ascend');
0030 [sortInterModuleId, sortInterIx] = sort(moduleIdEachNode(interIx), 'ascend');
0031 sortAllIx = [inputIx(sortInputIx), outputIx(sortOutputIx), ...
0032 interIx(sortInterIx)];
0033 sortAllModuleId = ([sortInputModuleId; sortOutputModuleId; sortInterModuleId]');
0034
0035 network.label = network.label(sortAllIx);
0036 network.matrix = network.matrix(sortAllIx, sortAllIx);
0037 network = setfield(network, FIELD_NAME_MODULE_ID, sortAllModuleId);
0038 end
0039
0040 function [ indexList ] = findList( array, wantedList )
0041 indexList = [];
0042 nEntry = numel(array);
0043 for iEntry = 1:nEntry
0044 if ~isempty(find(wantedList == array(iEntry), 1))
0045 indexList = [indexList, iEntry];
0046 end
0047 end
0048 end