summaryrefslogtreecommitdiff
path: root/src/local/domain
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-02-03 16:27:19 +0200
committerLV-426 <lv-426@taproot.org.il>2015-02-03 16:27:50 +0200
commitc3cb91602f90d4fec8a6801203ff78ee10f42a77 (patch)
treeaa66cad6f8798d0e68f2a55f5b0183a3e6c548d5 /src/local/domain
parent972b6a8fbbb1d82d5254abc2c1c8dc94117cd154 (diff)
DBO_random_data_generation__domain__CRI() mv + ;tweeking
Diffstat (limited to 'src/local/domain')
-rw-r--r--src/local/domain/cri/domain_cri.py14
-rw-r--r--src/local/domain/cri/test_domain__CRI.py58
2 files changed, 68 insertions, 4 deletions
diff --git a/src/local/domain/cri/domain_cri.py b/src/local/domain/cri/domain_cri.py
index c93b6473..75341ef7 100644
--- a/src/local/domain/cri/domain_cri.py
+++ b/src/local/domain/cri/domain_cri.py
@@ -2,15 +2,15 @@ from db_op import DB_op
class DBO_random_data_generation__domain__CRI(DB_op):
- def __init__(self, lim_n=128,
- lim_r=128 * 16,
- prob_link_create=0.25):
+ def __init__(self, lim_n=50,
+ lim_r=10000,
+ prob_link_create=0.01):
"""
generate random data: CRI domain: Person x Skill
"""
super(DBO_random_data_generation__domain__CRI, self).__init__()
- n_attr_set__skill = ['Cryptocurrency',
+ n_attr_set__skill_raw = ['Cryptocurrency',
'Database architecture',
'Web-development',
'HTML',
@@ -19,6 +19,12 @@ class DBO_random_data_generation__domain__CRI(DB_op):
'Guitar Playing',
'Image processing']
+ n_attr_set__skill = []
+ for s in n_attr_set__skill_raw:
+ n_attr_set__skill.append(s)
+ n_attr_set__skill.append(s + '_a')
+ n_attr_set__skill.append(s + '_b')
+
n_attr_set__name = ['Yael',
'Nofar',
'Ela',
diff --git a/src/local/domain/cri/test_domain__CRI.py b/src/local/domain/cri/test_domain__CRI.py
new file mode 100644
index 00000000..bacded97
--- /dev/null
+++ b/src/local/domain/cri/test_domain__CRI.py
@@ -0,0 +1,58 @@
+import inspect
+import logging
+import tempfile
+import unittest
+
+import db_controller as dbc
+from db_op import DBO_cypher_query
+from domain_cri import DBO_random_data_generation__domain__CRI
+from rz_server import Config
+
+
+class Test_Domain_CRI(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(self):
+ cfg = Config.init_from_file('res/etc/rhizi-server.conf')
+ self.db_ctl = dbc.DB_Controller(cfg)
+ self.log = logging.getLogger('rhizi')
+ self.log.addHandler(logging.StreamHandler())
+
+ def test_random_data_generation__domain__CRI(self, export_as_csv=True):
+ """
+ test:
+ - random CRI domain data generation
+ - DB dump in cvs format: person x skill x skill-level
+ """
+ op = DBO_random_data_generation__domain__CRI()
+ self.db_ctl.exec_op(op)
+
+ if False == export_as_csv:
+ return
+
+ q_arr = ['match (n: Person)',
+ 'with n',
+ 'match (n)-[r:Knows]->(m:Skill)',
+ 'return n.name, collect({skill_name: m.name, skill_level: r.proficiency})'
+ ]
+ op = DBO_cypher_query(q_arr);
+
+ cur_f_name = inspect.stack()[0][3]
+ def q_process_result_set():
+ with tempfile.NamedTemporaryFile(prefix='rz_%s' % (cur_f_name), dir='/tmp', suffix='.csv', delete=False) as f_out:
+ for _, _, r_set in op:
+ for row in r_set:
+ person_name, skill_dict_set = row # person to {sname: skill, s:pro: skill_level{ dict set
+ cvs_line_arr = [person_name]
+ for skill_dict in skill_dict_set:
+ skill_name = skill_dict['skill_name']
+ skill_level = skill_dict['skill_level']
+ cvs_line_arr += [skill_name, skill_level]
+ f_out.write(','.join(cvs_line_arr) + '\n')
+ f_out.write('\n')
+
+ op.process_result_set = q_process_result_set
+ self.db_ctl.exec_op(op)
+
+if __name__ == "__main__":
+ unittest.main()