You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RunExpSrv8s.m 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. function [] = RunExpSrv8s(iterStartStr, iterEndStr, netSizeStr, normF1, normF2, normF3, addAttPercStr)
  2. function [] = RunExpSrv8s(iterStartStr, iterEndStr, addAttPercStr)
  3. %affinity calculation types
  4. % affinity_calculation_shortest_path = 0;
  5. % affinity_calculation_euclid = 1;
  6. % affinity_calculation_common_friends = 2;
  7. % affinity_calculation_random_clustering = 3;
  8. % affinity_calculation_adamic_adar = 4;
  9. % affinity_calculation_katz_beta_0_5 = 5;
  10. % affinity_calculation_katz_beta_0_05 = 6;
  11. % affinity_calculation_katz_beta_0_005 = 7;
  12. % affinity_calculation_boost = 9; % sigal 12.3.13 add BOOST option
  13. expParams = 3;
  14. if nargin < expParams
  15. usageStr = 'Usage: RunExperimentSrv <iterStart> <iterEnd> <netSize> [<addAttPerc>]\n';
  16. % usageStr = 'Usage: RunExperimentSrv <iterStart> <iterEnd> <netSize> <f1> <f2> <f3> [<addAttPerc>]\n';
  17. fprintf('RunExpSrv8s:Invalid usage: expected at least %d parameters.\n%s', expParams, usageStr);
  18. return;
  19. end
  20. % input_iter = input('iteration number:');
  21. iterStart = str2num(iterStartStr);
  22. iterEnd = str2num(iterEndStr);
  23. % input_factors
  24. f1 = 9; %str2num(normF1);
  25. f2 = 2; %str2num(normF2);
  26. f3 = 2; %str2num(normF3);
  27. normFactorVec = [f1 f2 f3];
  28. % input addAttPerc;
  29. addAttPerc = 1; %[1 0.7];
  30. if nargin > expParams
  31. addAttPerc = str2double(addAttPercStr);
  32. if addAttPerc > 1
  33. addAttPerc = 1;
  34. elseif addAttPerc < 0
  35. addAttPerc = 0;
  36. end
  37. end
  38. affinities = [2,4,3,9]; %[2,3,9]; %[2,4,3,9]; %,6]; %3,4]; %,6];
  39. %num_missing_nodes_arr = [10 30 50 100 150 200]; %%[11 21 31 41 50]; %%5:5:30; %10:10:50; %%[11 21 31 41 50]; %10:10:50;
  40. percentKnownPHsVec = 1;
  41. % ds_10k = [2000 5000 10000];
  42. % ds_10km = [10001];
  43. % ds_32k = [2048 4096 8192 16384 32768];
  44. % ds_100k = [20000 25000 50000 75000 100000];
  45. % ds_100km = [100001];
  46. % ds_Train = [2001 2049];
  47. ds_GridTrain = [45];
  48. % input netSize
  49. % if find(ds_10k==netSize)
  50. % ds_str = 'Datasets_10K/';
  51. % num_missing_nodes_arr = [10 20 30 50 70 100];%[10 100 150];
  52. % elseif find(ds_10km==netSize)
  53. % ds_str = 'Datasets_10K/';
  54. % netSize = netSize-1;
  55. % num_missing_nodes_arr = [50 100 150 200 250]; %[10 100 150];
  56. % elseif find(ds_32k==netSize)
  57. % ds_str = 'Datasets_32K/'; %'Train/'; %
  58. % num_missing_nodes_arr = [11 21 31 41 50]; % 100]; %Train
  59. % elseif find(ds_100k==netSize)
  60. % ds_str = 'Datasets_100K/';
  61. % num_missing_nodes_arr = [50 100 200 300 500];
  62. % elseif find(ds_100km==netSize)
  63. % ds_str = 'Datasets_100K/';
  64. % netSize = netSize-1;
  65. % num_missing_nodes_arr = [200 400 600 800 1000];
  66. % elseif find(ds_Train==netSize)
  67. % ds_str = 'Train/';
  68. % netSize = netSize-1;
  69. % num_missing_nodes_arr = [10 30 50 70 100 150]; %[11 21 31 41 50 100 150];
  70. % elseif find(ds_GridTrain==netSize)
  71. % ds_str = 'graph_production/produced_graphs/';
  72. % num_missing_nodes_arr = [10 30 50 70];
  73. % else
  74. % fprintf('RunExpSrv8s:Invalid netSize %d.\n',netSize);
  75. % return;
  76. % end
  77. <<<<<<< HEAD
  78. ds_str = 'in/';
  79. num_missing_nodes_arr = [2];
  80. =======
  81. ds_str = 'graph_production/produced_graphs/';
  82. num_missing_nodes_arr = [1];
  83. >>>>>>> 3750fcfc8ca443a312af79261f66978da7181c08
  84. rootDir = '../';
  85. %rootDir = '/Users/armin/Desktop/DML/projects/graphgenproj/'; %Facebook/';
  86. %rootDir = 'D:/__SN_Jan14_FF75/'; %Facebook/';
  87. filePrefix = 'testgraph_*'; % 'facebook_sparse_'; %
  88. %Sigal - 13.2.14 - images data
  89. imagesDir = strcat(rootDir,'Images/');
  90. imagesFile = 'ImagesMatchA.csv';
  91. imagesCount = 200000;
  92. imagesData = []; % LoadAsciiImagesMatch(imagesDir, imagesFile, imagesCount, debugFlag); %[]; %
  93. numImagesProfiles = 200; % 50; %
  94. imgMissProb = 0; %0.2; %%no images
  95. imgSimProbDiff = 0.1; %%0.2;
  96. imgSimType = 1; %% 0=realData, 1=rand(uniform distribution), 2=randn(normal distribution)
  97. datasetDir = strcat(rootDir,ds_str); %'Datasets_10K/'); %'Facebook/Datasets_10K/'); %'Traing_16K/'); %% TODO sigal - change rootDir path before EXE build
  98. factor_str = sprintf('F%d%d%d_',normFactorVec);
  99. images_str = sprintf('I%dP%dM%d_',imgSimType,imgSimProbDiff*10,imgMissProb*10);
  100. results_dir = strcat(datasetDir,'testImg_noTh_','/',factor_str,images_str,'Iter_',iterStartStr,iterEndStr,'/');
  101. fprintf('RunExpSrv8b: results_dir %s\n',results_dir);
  102. runAlgFlag = 1;
  103. debugFlag = 0;
  104. dumpKronEM = 1;
  105. dumpGED = 0;
  106. numThreshold = 0;
  107. maxAttStat = 1.35; %1.20; % population threshold - use this attribute only if it appears less than this percentage
  108. numAttrCols = 60; %21; %%50; %%11; %40; %%50;
  109. attSelected = ones(1,numAttrCols);
  110. attWeight = [0.3]; %[0.2 0.3 0.4 0.5 0.6 0.7 0.8]; %%0.3;
  111. addMissingAtt = addAttPerc;
  112. attAffinityThreshold = 0.15; % noise threshold
  113. % skipAtt = [6 2 20 26 22 17 8 14 3 1]; % top 10 PercC
  114. % attSelected(skipAtt) = 0;
  115. date_now = clock;
  116. randSeed = round((date_now(5)+date_now(6)*11)*iterStart+31);
  117. rand(1,randSeed);
  118. date_now = strcat(num2str(date_now(1)),'_',num2str(date_now(2)),'_', num2str(date_now(3)),'_', num2str(date_now(4)), num2str(date_now(5)),'_', num2str(date_now(6)));
  119. LogMsg(sprintf('%s Start RunExpSrv8s RunExperiment (random %d, addMissingAtt %.2f)...',date_now,randSeed,addMissingAtt));
  120. % attSelected = zeros(1,numAttrCols);
  121. % % for i = [1:4,6:8,12:20,22,24,26:30] %% top 23 threshold
  122. % % for i = [1,3,17,14,8,26,22,18,6,16] %% top 5/10 sum
  123. % % for i = [1,14,3,8,22,26,17,19,18,20] %% top 5/10 one
  124. % for i = [1,3,17,14,18,8,6,16,26,10] %% top 5/10 two
  125. % attSelected(i) = 1;
  126. % end
  127. % LogMsg(sprintf('Select %d attributes out of %d ...', sum(attSelected), size(attSelected,2)));
  128. prefix = sprintf('%s%s_%s',datasetDir,filePrefix,'*.txt.mat'); % '0*.txt.mat');
  129. files = dir(prefix);
  130. firstIter = 1;
  131. for iter = iterStart:iterEnd % loop over same network with different missing nodes
  132. if size(files,1) == 0
  133. fprintf('*** ERROR: RunExpSrv8b no file were found (prefix %s)\n',prefix);
  134. end
  135. for i = 1:size(files,1) % loop over the list of networks
  136. try
  137. file = files(i).name;
  138. % sigal 12/6/13 - use binary attribute mat file
  139. attFile = strrep(file, '.txt.mat', '.usr.mat');
  140. [attributes, attUpperRange, attSelected, ~] = PrepareAttributes5(datasetDir, attFile, numAttrCols, maxAttStat, attSelected);
  141. LogMsg(sprintf('Select %d attributes out of %d ...', sum(attSelected), size(attSelected,2)));
  142. if runAlgFlag == 1
  143. date_now = clock;
  144. date_now = strcat(num2str(date_now(1)),'_',num2str(date_now(2)),'_', num2str(date_now(3)),'_', num2str(date_now(4)), num2str(date_now(5)),'_', num2str(date_now(6)));
  145. % make sure dump & results directories exist
  146. if (firstIter == 1 && i == 1)
  147. firstIter = 0;
  148. if isdir(results_dir) == 0
  149. mkdir(results_dir);
  150. end
  151. dumpFilePath = sprintf('%sdumpKronEM_%s/', results_dir, date_now);
  152. if (dumpKronEM == 1)
  153. mkdir(dumpFilePath);
  154. end
  155. dump_data_dir = sprintf('%sdumpData_%s/', results_dir, date_now);
  156. if dumpGED == 1 && isdir(dump_data_dir) == 0
  157. mkdir(dump_data_dir)
  158. end
  159. end
  160. % run algorithm (file load is done internaly)
  161. [rand_score,purity,p_triads,missing_nodes_mapping,removed_nodes] = MissingNodes_S8b(datasetDir, file, ...
  162. attributes, attUpperRange, attWeight, addMissingAtt, normFactorVec, affinities, num_missing_nodes_arr, attAffinityThreshold, ...
  163. imagesData, numImagesProfiles, imgMissProb, imgSimType, imgSimProbDiff, percentKnownPHsVec, dumpGED, dump_data_dir, iter);
  164. %[rand_score,purity,p_triads,missing_nodes_mapping,removed_nodes] = MissingNodes_Sparse(datasetDir, file, affinities, 1);
  165. % dump graph data for KronEM runs
  166. if dumpKronEM == 1
  167. DumpDataset(datasetDir, file, iter, removed_nodes, dumpFilePath);
  168. end
  169. % save results
  170. out_file = sprintf('%sres_%s_%s.mat', results_dir, file, date_now);
  171. save(out_file);
  172. file_name = sprintf('%s_%s','../output/mine/',file);
  173. if(iter == 0)
  174. copyfile('../output/graphed_0.mat',file_name);
  175. end
  176. <<<<<<< HEAD
  177. LogMsg(sprintf('Results for file %s,iter %d at %s',file,iter,out_file));
  178. %fprintf('Completed RunExperiment cycle - results at %s.\n',out_file);
  179. end
  180. catch
  181. fprintf('An Error Occured!!!!!')
  182. =======
  183. end
  184. % run algorithm (file load is done internaly)
  185. [rand_score,purity,p_triads,missing_nodes_mapping,removed_nodes] = MissingNodes_S8b(datasetDir, file, ...
  186. attributes, attUpperRange, attWeight, addMissingAtt, normFactorVec, affinities, num_missing_nodes_arr, attAffinityThreshold, ...
  187. imagesData, numImagesProfiles, imgMissProb, imgSimType, imgSimProbDiff, percentKnownPHsVec, dumpGED, dump_data_dir, iter);
  188. %[rand_score,purity,p_triads,missing_nodes_mapping,removed_nodes] = MissingNodes_Sparse(datasetDir, file, affinities, 1);
  189. % dump graph data for KronEM runs
  190. if dumpKronEM == 1
  191. DumpDataset(datasetDir, file, iter, removed_nodes, dumpFilePath);
  192. end
  193. % save results
  194. out_file = sprintf('%sres_%s_%s.mat', results_dir, file, date_now);
  195. save(out_file);
  196. file_name = sprintf('%s%s','D:\Uni\sharif\Project\SAMI\Code\SAMI\output\mine\',file);
  197. if(iter == 1)
  198. copyfile('D:\Uni\sharif\Project\SAMI\Code\SAMI\output\graphed_1.mat',file_name);
  199. end
  200. LogMsg(sprintf('Results for file %s,iter %d at %s',file,iter,out_file));
  201. %fprintf('Completed RunExperiment cycle - results at %s.\n',out_file);
  202. >>>>>>> 3750fcfc8ca443a312af79261f66978da7181c08
  203. end
  204. % beep;
  205. end
  206. end
  207. date_now = clock;
  208. date_now = strcat(num2str(date_now(1)),'_',num2str(date_now(2)),'_', num2str(date_now(3)),'_', num2str(date_now(4)), num2str(date_now(5)),'_', num2str(date_now(6)));
  209. LogMsg(sprintf('%s Completed RunExpSrv8s RunExperiment (random %d).',date_now,randSeed));
  210. end