0
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
1
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
2 // REQUIRE
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
3 var esc = require('querystring').escape,
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
4 neo4j = require('./neo4j_driver.js'),
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
5 fs = require('fs'),
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
6 readline = require('readline'),
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
7 mysql = require('mysql');
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
8
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
9 // ARGUMENTS
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
10 var file_nodes = process.argv[2],
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
11 file_relations = process.argv[3],
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
12 namespace = process.argv[4],
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
13 host = process.argv[5],
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
14 port = process.argv[6],
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
15 debug = Number(process.argv[7]);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
16
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
17 // VARIABLES
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
18 var neo4jClient = neo4j.createClient({'host':host, 'port':port}),
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
19 uri_base = 'http://' + host + ':' + port + '/db/data/',
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
20 start = process.hrtime();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
21
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
22 // MAIN
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
23 getBaseId(function(nid_base, rid_base){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
24 console.log('BASE NODE ID:', nid_base);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
25 console.log('BASE RELATIONSHIP ID:', rid_base);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
26 // ADD EMPTY NODES FIRST, THEN ADD PROPERTIES TO THE NODES WITH APPROPRIATE ID.
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
27 // OTHERWISE, CANNOT GET CORRECT ID BECAUSE ADD NODE REQUESTS FINISHES IN NO ORDER.
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
28 addNodes(file_nodes, nid_base, function(nnum){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
29 if(debug) elapsed_time('elapsed');
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
30 addNodeProperties(file_nodes, nid_base, function(nnum2){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
31 if(debug) elapsed_time('elapsed');
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
32 addRelations(file_relations, nid_base, function(rnum){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
33 if(debug) elapsed_time("elapsed");
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
34 saveMetadata(file_nodes, file_relations, nid_base, rid_base, nnum, rnum);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
35
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
36 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
37 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
38 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
39 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
40
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
41 // MYSQL CONNECTION
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
42 function connect(callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
43 var conn = mysql.createConnection({
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
44 'host': host,
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
45 'database':'sem4j',
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
46 'user':'sem4j',
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
47 'password':'sem4j'
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
48 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
49 callback(conn);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
50 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
51 function saveMetadata(file_nodes, file_relations, nid_base, rid_base, nnum, rnum){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
52 connect(function(conn){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
53 //console.log(conn);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
54 conn.query(
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
55 "INSERT INTO load_info VALUES(null,?,?,?,?,?,?,?);",
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
56 [getTime(), file_nodes, file_relations, nid_base, rid_base, nnum, rnum],
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
57 function (err, results) {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
58 if (err) {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
59 console.log(err);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
60 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
61 console.log('--- results ---');
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
62 console.log(results);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
63 conn.end(function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
64 console.log('connection end');
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
65 })
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
66 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
67 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
68 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
69 function getTime() {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
70 var str = "";
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
71
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
72 var currentTime = new Date()
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
73 var hours = currentTime.getHours()
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
74 var minutes = currentTime.getMinutes()
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
75 var seconds = currentTime.getSeconds()
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
76
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
77 if (minutes < 10) {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
78 minutes = "0" + minutes
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
79 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
80 if (seconds < 10) {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
81 seconds = "0" + seconds
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
82 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
83 str += hours + ":" + minutes + ":" + seconds + " ";
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
84 return str;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
85 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
86
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
87 function elapsed_time(note){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
88 //var elapsed_time = function(note){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
89 var precision = 3; // 3 decimal places
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
90 var elapsed = process.hrtime(start)[1] / 1000000; // divide by a million to get nano to milli
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
91 console.log(process.hrtime(start)[0] + " s, " + elapsed.toFixed(precision) + " ms - " + note); // print message + time
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
92 start = process.hrtime(); // reset the timer
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
93 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
94 function getBaseId(callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
95 // CREATE TEST NODE
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
96 neo4jClient.post('node', '', function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
97 // NODE ID IS NOT REUSED, SO THIS IS THE BASE ID
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
98 var nid_base = Number(obj.self.split('/')[6]);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
99 // CREATE TEST RELATIONSHIP
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
100 var data = { 'to' : uri_base + 'node/' + nid_base, 'type':'test', 'data':{} };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
101 neo4jClient.post('node/' + nid_base + '/relationships/', data, function(obj) {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
102 var rid_base = Number(obj.self.split('/')[6]);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
103 // DELETE TEST RELATIONSHIP FIRST
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
104 // USE BATCH BECAUSE DELETE METHOD IS NOT DEFINED IN THE DRIVER
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
105 var data = [{'method':'DELETE', 'to':'relationship/' + rid_base, 'body':'', 'id':0}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
106 neo4jClient.post('batch/', data, function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
107 // DELETE TEST NODE
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
108 var data = [{'method':'DELETE', 'to':'node/' + nid_base, 'body':'', 'id':0}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
109 neo4jClient.post('batch/', data, function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
110 callback(nid_base, rid_base);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
111 })
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
112 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
113 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
114 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
115 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
116 function addNodes(file, nid_base, callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
117 var rs = fs.ReadStream(file);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
118 var rl = readline.createInterface({'input': rs, 'output': {}});
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
119 var cnt_added = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
120 var cnt_line = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
121 var num_line = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
122 rl.on('line', function(line){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
123 cnt_line += 1;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
124 line = line.split("\t");
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
125 addNode(function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
126 cnt_added += 1;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
127 if(cnt_added % 100 == 0){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
128 if(debug) console.log('ADDING EMPTY NODES STATUS:', cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
129 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
130 if(cnt_added == num_line){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
131 console.log('ADDING EMPTY NODES FINISHED:', cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
132 callback(num_line);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
133 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
134 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
135 }).on('pause', function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
136 num_line = cnt_line;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
137 console.log('ADDING EMPTY NODES START:', num_line);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
138 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
139 rl.resume();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
140 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
141 function addNode(callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
142 neo4jClient.post('node', '', function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
143 callback();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
144 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
145 };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
146 function addNodeProperties(file, nid_base, callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
147 var rs = fs.ReadStream(file);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
148 var rl = readline.createInterface({'input': rs, 'output': {}});
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
149 var cnt_added = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
150 var cnt_line = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
151 var num_line = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
152 rl.on('line', function(line){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
153 cnt_line += 1;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
154 line = line.split("\t");
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
155 addNodeProperty(Number(line[0]) + nid_base, line[1], line[2], line[3], namespace, file, function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
156 cnt_added += 1;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
157 if(cnt_added % 100 == 0){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
158 if(debug) console.log('ADDING NODE PROPERTIES STATUS:', cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
159 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
160 if(cnt_added == num_line){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
161 console.log('ADDING NODE PROPERTIES FINISHED:', cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
162 callback(num_line);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
163 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
164 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
165 }).on('pause', function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
166 num_line = cnt_line;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
167 console.log('ADDING NODE PROPERTIES START:', num_line);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
168 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
169 rl.resume();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
170 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
171 function addNodeProperty(node_id, type, name, properties, namespace, filename, callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
172
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
173 var body = JSON.parse(properties);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
174 body['name'] = name;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
175 body['type'] = type;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
176 body['rowid'] = node_id;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
177 body['namespace'] = namespace;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
178 body['filename'] = filename;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
179 var uri_node = uri_base + 'node/' + node_id;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
180
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
181 // USE BATCH BECAUSE PUT METHOD IS NOT DEFINED IN THE DRIVER
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
182 var data = [
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
183 {'method':'PUT', 'to':'node/' + node_id + '/properties', 'body':body, 'id':0},
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
184 {'method':'POST', 'to':'index/node/' + esc(namespace), 'body':{uri:uri_node, key:'name', value:name}, 'id':1}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
185 //{'method':'POST', 'to':'index/node/' + esc(namespace), 'body':{uri:uri_node, key:'namespace', value:namespace}, 'id':2},
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
186 //{'method':'POST', 'to':'index/node/' + esc(namespace), 'body':{uri:uri_node, key:'filename', value:esc(filename)}, 'id':3}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
187
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
188 neo4jClient.post('batch/', data, function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
189 //console.log('DEBUG: Added:', obj, node_id, name);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
190 callback();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
191 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
192
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
193 /*
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
194 // USE BATCH BECAUSE PUT METHOD IS NOT DEFINED IN THE DRIVER
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
195 data = [{'method':'PUT', 'to':'node/' + node_id + '/properties', 'body':body, 'id':0}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
196 neo4jClient.post('batch/', data, function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
197 uri_node = uri_base + 'node/' + node_id;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
198 var data = [{'method':'POST', 'to':'index/node/' + esc(index), 'body':{uri:uri_node, key:'name', value:name}, 'id':0},
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
199 {'method':'POST', 'to':'index/node/' + esc(index), 'body':{uri:uri_node, key:'namespace', value:namespace}, 'id':1},
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
200 {'method':'POST', 'to':'index/node/' + esc(index), 'body':{uri:uri_node, key:'filename', value:esc(filename)}, 'id':2}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
201 neo4jClient.post('batch/', data, function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
202 console.log('DEBUG: Added:', obj, node_id, name);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
203 callback();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
204 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
205 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
206 */
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
207 };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
208 function addRelations(file, nid_base, callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
209 var rs = fs.ReadStream(file);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
210 var rl = readline.createInterface({'input': rs, 'output': {}});
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
211 var cnt_added = 0, cnt_line = 0, num_line = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
212 rl.on('line', function(line){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
213 cnt_line += 1;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
214 line = line.split("\t");
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
215 addRelation(Number(line[0]) + nid_base, Number(line[1]) + nid_base, line[2], line[3], 'sem4j.org', file, function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
216 cnt_added += 1;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
217 if(cnt_added % 100 == 0){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
218 if(debug) console.log('ADDING RELATIONS STATUS:', cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
219 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
220 if(cnt_added == num_line){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
221 console.log('ADDING RELATIONS FINISHED:', cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
222 callback(cnt_added);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
223 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
224 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
225 }).on('pause', function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
226 num_line = cnt_line;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
227 console.log('ADDING RELATIONS START:', num_line);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
228 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
229 rl.resume();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
230 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
231 function addRelation(source, target, type, properties, namespace, filename, callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
232 var index = 'users';
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
233 var body = JSON.parse(properties);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
234 var relation = { 'to' : uri_base + 'node/' + target, 'type': type, 'data' : body };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
235 neo4jClient.post('node/' + source + '/relationships/', relation, function() {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
236 callback();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
237 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
238 /*
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
239 var data = [
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
240 {'method':'POST', 'to':'node/' + source + '/relationships/', 'body':relation, 'id':0},
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
241 {'method':'POST', 'to':'index/relationship/' + esc(index), 'body':{'uri':'{0}', key:'namespace', value:namespace}, 'id':1},
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
242 {'method':'POST', 'to':'index/relationship/' + esc(index), 'body':{'uri':'{0}', key:'filename', value:esc(filename)}, 'id':2}];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
243 neo4jClient.post('batch/', data, function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
244 //console.log(obj);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
245 callback();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
246 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
247 */
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
248 };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
249
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
250 /*
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
251
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
252 function getNodeIDBase(callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
253 var data = {
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
254 "query":"start n = node(*) return max(ID(n))",
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
255 "params":{}
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
256 };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
257 neo4jClient.post('cypher', data, function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
258 if(obj.data[0][0]){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
259 var nid_base = obj.data[0][0];
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
260 }else{
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
261 var nid_base = 0;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
262 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
263 callback(nid_base);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
264 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
265 }
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
266
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
267 function addNodeOld(node_id, type, name, properties, callback){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
268
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
269 index = 'idx_name';
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
270
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
271 //name = 'Neo';
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
272 //type = 'person';
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
273 var input = JSON.parse(properties);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
274 //console.log(input);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
275
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
276 //input = {'name':name, 'type':type, 'node_id':node_id};
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
277 input['name'] = name;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
278 input['type'] = type;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
279 input['node_id'] = node_id;
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
280 console.log(input);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
281
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
282 neo4jClient.post('node', input, function(obj){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
283 var data = { uri:obj.self, key:'name', value:name };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
284 neo4jClient.post(['index/node', esc(index)], data, function(){
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
285 console.log('Added:', obj.self, node_id, name);
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
286 callback();
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
287 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
288 });
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
289 };
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
290
|
ryo_tas <yamanaka@genome.rcast.u-tokyo.ac.jp>
parents:
diff
changeset
|
291 */ |