-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhandleDataset.cpp
More file actions
119 lines (90 loc) · 2.98 KB
/
handleDataset.cpp
File metadata and controls
119 lines (90 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "handleDataset.h"
void loadDimensions (string datasetPath, int &nodes_number, int &col_indices_number, float &damping, int &empty_len){
ifstream connFile;
connFile.open(datasetPath);
if (!connFile.is_open()){
cerr << "Input file does not exist" << endl;
exit(-1);
}
cout << "Load dimensions" << endl;
if (connFile){
string line, element;
// Read nodes number
getline(connFile, line);
nodes_number = stoi(line);
// Read column indices length
getline(connFile, line);
col_indices_number = stoi(line);
// Skip row pointers array
getline(connFile, line);
// Skip column
getline(connFile, line);
// Skip data
getline(connFile, line);
// Save "damping" matrix factor
getline(connFile, line);
damping = stof(line);
// Read empty columns vector length
getline(connFile, line);
empty_len = stoi(line);
//cout << "Empty length: " << empty_len << endl;
connFile.close();
}
}
void loadDataset(string datasetPath, int* row_ptrs, int* col_indices, float* data, int* empty_cols){
ifstream connFile;
connFile.open(datasetPath);
cout << "Load data" << endl;
if (connFile){
string line, element;
// Read nodes number and allocate vector
getline(connFile, line);
int nodes_number = stoi(line);
// Read row indices number and allocate vector
getline(connFile, line);
int col_indices_number = stoi(line);
// Store row indices
getline(connFile, line);
stringstream ss(line);
for (int i = 0; i < col_indices_number; i++){
getline(ss, element, ',');
row_ptrs[i] = stoi(element);
}
// Store column indices
getline(connFile, line);
stringstream tt(line);
for (int i = 0; i < col_indices_number; i++){
getline(tt, element, ',');
col_indices[i] = stoi(element);
}
// Store data
getline(connFile, line);
stringstream uu(line);
for (int i = 0; i < col_indices_number; i++){
getline(uu, element, ',');
data[i] = stof(element);
}
// Skip "damping" matrix factor
getline(connFile, line);
// Read empty columns vector length
getline(connFile, line);
int empty_len = stoi(line);
// Store empty columns indices
getline(connFile, line);
stringstream vv(line);
for (int i = 0; i < empty_len; i++){
getline(vv, element, ',');
empty_cols[i] = stoi(element);
}
connFile.close();
}
}
void storePagerank(float *pk, int size, string exportPath){
ofstream CSVFile;
CSVFile.open(exportPath);
if(CSVFile.is_open()){
for (int i = 0; i < size; i++){
CSVFile << pk[i] << endl;
}
}
}