3434URI = "localhost:48555"
3535
3636# Existing elements in the graph are those that pre-exist in the graph, and should be predicted to continue to exist
37- PREEXISTS = dict ( solution = 0 )
37+ PREEXISTS = 0
3838
3939# Candidates are neither present in the input nor in the solution, they are negative samples
40- CANDIDATE = dict ( solution = 1 )
40+ CANDIDATE = 1
4141
4242# Elements to infer are the graph elements whose existence we want to predict to be true, they are positive samples
43- TO_INFER = dict ( solution = 2 )
43+ TO_INFER = 2
4444
4545# Categorical Attribute types and the values of their categories
4646CATEGORICAL_ATTRIBUTES = {'name' : ['Diabetes Type II' , 'Multiple Sclerosis' , 'Blurred vision' , 'Fatigue' , 'Cigarettes' ,
@@ -138,19 +138,23 @@ def create_concept_graphs(example_indices, grakn_session):
138138 # Build a graph from the queries, samplers, and query graphs
139139 graph = build_graph_from_queries (graph_query_handles , tx , infer = infer )
140140
141- # Remove label leakage - change type labels that indicate candidates into non-candidates
142- for data in multidigraph_data_iterator (graph ):
143- for label_to_obfuscate , with_label in TYPES_AND_ROLES_TO_OBFUSCATE .items ():
144- if data ['type' ] == label_to_obfuscate :
145- data .update (type = with_label )
146- break
141+ obfuscate_labels (graph , TYPES_AND_ROLES_TO_OBFUSCATE )
147142
148143 graph .name = example_id
149144 graphs .append (graph )
150145
151146 return graphs
152147
153148
149+ def obfuscate_labels (graph , types_and_roles_to_obfuscate ):
150+ # Remove label leakage - change type labels that indicate candidates into non-candidates
151+ for data in multidigraph_data_iterator (graph ):
152+ for label_to_obfuscate , with_label in types_and_roles_to_obfuscate .items ():
153+ if data ['type' ] == label_to_obfuscate :
154+ data .update (type = with_label )
155+ break
156+
157+
154158def get_query_handles (example_id ):
155159 """
156160 Creates an iterable, each element containing a Graql query, a function to sample the answers, and a QueryGraph
@@ -174,15 +178,13 @@ def get_query_handles(example_id):
174178 get;''' )
175179
176180 vars = p , par , ps , d , diag , n = 'p' , 'par' , 'ps' , 'd' , 'diag' , 'n'
177- g = QueryGraph ()
178- g .add_vars (* vars , ** PREEXISTS )
179- g .add_role_edge (ps , p , 'child' , ** PREEXISTS )
180- g .add_role_edge (ps , par , 'parent' , ** PREEXISTS )
181- g .add_role_edge (diag , par , 'patient' , ** PREEXISTS )
182- g .add_role_edge (diag , d , 'diagnosed-disease' , ** PREEXISTS )
183- g .add_has_edge (d , n , ** PREEXISTS )
184-
185- hereditary_query_graph = g
181+ hereditary_query_graph = (QueryGraph ()
182+ .add_vars (vars , PREEXISTS )
183+ .add_role_edge (ps , p , 'child' , PREEXISTS )
184+ .add_role_edge (ps , par , 'parent' , PREEXISTS )
185+ .add_role_edge (diag , par , 'patient' , PREEXISTS )
186+ .add_role_edge (diag , d , 'diagnosed-disease' , PREEXISTS )
187+ .add_has_edge (d , n , PREEXISTS ))
186188
187189 # === Consumption Feature ===
188190 consumption_query = inspect .cleandoc (f'''match
@@ -192,26 +194,22 @@ def get_query_handles(example_id):
192194 has units-per-week $u; get;''' )
193195
194196 vars = p , s , n , c , u = 'p' , 's' , 'n' , 'c' , 'u'
195- g = QueryGraph ()
196- g .add_vars (* vars , ** PREEXISTS )
197- g .add_has_edge (s , n , ** PREEXISTS )
198- g .add_role_edge (c , p , 'consumer' , ** PREEXISTS )
199- g .add_role_edge (c , s , 'consumed-substance' , ** PREEXISTS )
200- g .add_has_edge (c , u , ** PREEXISTS )
201-
202- consumption_query_graph = g
197+ consumption_query_graph = (QueryGraph ()
198+ .add_vars (vars , PREEXISTS )
199+ .add_has_edge (s , n , PREEXISTS )
200+ .add_role_edge (c , p , 'consumer' , PREEXISTS )
201+ .add_role_edge (c , s , 'consumed-substance' , PREEXISTS )
202+ .add_has_edge (c , u , PREEXISTS ))
203203
204204 # === Age Feature ===
205205 person_age_query = inspect .cleandoc (f'''match
206206 $p isa person, has example-id { example_id } , has age $a;
207207 get;''' )
208208
209209 vars = p , a = 'p' , 'a'
210- g = QueryGraph ()
211- g .add_vars (* vars , ** PREEXISTS )
212- g .add_has_edge (p , a , ** PREEXISTS )
213-
214- person_age_query_graph = g
210+ person_age_query_graph = (QueryGraph ()
211+ .add_vars (vars , PREEXISTS )
212+ .add_has_edge (p , a , PREEXISTS ))
215213
216214 # === Risk Factors Feature ===
217215 risk_factor_query = inspect .cleandoc (f'''match
@@ -221,12 +219,10 @@ def get_query_handles(example_id):
221219 get;''' )
222220
223221 vars = p , d , r = 'p' , 'd' , 'r'
224- g = QueryGraph ()
225- g .add_vars (* vars , ** PREEXISTS )
226- g .add_role_edge (r , p , 'person-at-risk' , ** PREEXISTS )
227- g .add_role_edge (r , d , 'risked-disease' , ** PREEXISTS )
228-
229- risk_factor_query_graph = g
222+ risk_factor_query_graph = (QueryGraph ()
223+ .add_vars (vars , PREEXISTS )
224+ .add_role_edge (r , p , 'person-at-risk' , PREEXISTS )
225+ .add_role_edge (r , d , 'risked-disease' , PREEXISTS ))
230226
231227 # === Diagnosis ===
232228 diagnosis_query = inspect .cleandoc (f'''match
@@ -239,26 +235,22 @@ def get_query_handles(example_id):
239235 get;''' )
240236
241237 vars = p , s , sn , d , dn , sp , sev , c = 'p' , 's' , 'sn' , 'd' , 'dn' , 'sp' , 'sev' , 'c'
242- g = QueryGraph ()
243- g .add_vars (* vars , ** PREEXISTS )
244- g .add_has_edge (s , sn , ** PREEXISTS )
245- g .add_has_edge (d , dn , ** PREEXISTS )
246- g .add_role_edge (sp , s , 'presented-symptom' , ** PREEXISTS )
247- g .add_has_edge (sp , sev , ** PREEXISTS )
248- g .add_role_edge (sp , p , 'symptomatic-patient' , ** PREEXISTS )
249- g .add_role_edge (c , s , 'effect' , ** PREEXISTS )
250- g .add_role_edge (c , d , 'cause' , ** PREEXISTS )
251-
252- base_query_graph = g
253-
254- g = copy .copy (base_query_graph )
238+ base_query_graph = (QueryGraph ()
239+ .add_vars (vars , PREEXISTS )
240+ .add_has_edge (s , sn , PREEXISTS )
241+ .add_has_edge (d , dn , PREEXISTS )
242+ .add_role_edge (sp , s , 'presented-symptom' , PREEXISTS )
243+ .add_has_edge (sp , sev , PREEXISTS )
244+ .add_role_edge (sp , p , 'symptomatic-patient' , PREEXISTS )
245+ .add_role_edge (c , s , 'effect' , PREEXISTS )
246+ .add_role_edge (c , d , 'cause' , PREEXISTS ))
255247
256248 diag , d , p = 'diag' , 'd' , 'p'
257- g .add_vars (diag , ** TO_INFER )
258- g .add_role_edge (diag , d , 'diagnosed-disease' , ** TO_INFER )
259- g .add_role_edge (diag , p , 'patient' , ** TO_INFER )
260249
261- diagnosis_query_graph = g
250+ diagnosis_query_graph = (copy .copy (base_query_graph )
251+ .add_vars ([diag ], TO_INFER )
252+ .add_role_edge (diag , d , 'diagnosed-disease' , TO_INFER )
253+ .add_role_edge (diag , p , 'patient' , TO_INFER ))
262254
263255 # === Candidate Diagnosis ===
264256 candidate_diagnosis_query = inspect .cleandoc (f'''match
@@ -270,13 +262,10 @@ def get_query_handles(example_id):
270262 $diag(candidate-patient: $p, candidate-diagnosed-disease: $d) isa candidate-diagnosis;
271263 get;''' )
272264
273- g = copy .copy (base_query_graph )
274-
275- diag , d , p = 'diag' , 'd' , 'p'
276- g .add_vars (diag , ** CANDIDATE )
277- g .add_role_edge (diag , d , 'candidate-diagnosed-disease' , ** CANDIDATE )
278- g .add_role_edge (diag , p , 'candidate-patient' , ** CANDIDATE )
279- candidate_diagnosis_query_graph = g
265+ candidate_diagnosis_query_graph = (copy .copy (base_query_graph )
266+ .add_vars ([diag ], CANDIDATE )
267+ .add_role_edge (diag , d , 'candidate-diagnosed-disease' , CANDIDATE )
268+ .add_role_edge (diag , p , 'candidate-patient' , CANDIDATE ))
280269
281270 return [
282271 (diagnosis_query , lambda x : x , diagnosis_query_graph ),
0 commit comments