Skip to content

Commit

Permalink
modified script to accept qualified predicate in query graph qualifie…
Browse files Browse the repository at this point in the history
…r constraints; added qualifiers to inferred edges for mvp2 queries; corrected the inference rule for mvp2 queries.
  • Loading branch information
kaiwenho committed May 22, 2024
1 parent a0b818c commit f11b901
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 54 deletions.
40 changes: 36 additions & 4 deletions medikanren2/neo/neo-server/neo-server-utils.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
domain-exclude*
range-exclude*
get-object
get-and-print-qualifiers
)

(require racket/list
Expand Down Expand Up @@ -71,13 +72,38 @@
(equal? "synthesis" aspect))
(equal? direction direction^)))))

#|
A increases B increases C = A increases C
A decreases B deceases C = A increases C
A increases B decreases C = A decreases C
A decreases B increases C = A decreases C
|#

(define mvp2-2hop-filter
(lambda (q direction)
(lambda (e* direction)
(filter
(lambda (e)
(let-values ([(_ eprop) (split-at e 5)])
(mvp2-filter (cadr eprop) direction)))
q)))
(match e
[`(,curie_x
,pred_xy
,curie_y
,(? string? pred_yz)
,(? string? curie_z)
,props_xy
,props_yz)
(if (equal? direction "increased")
(or
(and (mvp2-filter props_xy "increased")
(mvp2-filter props_yz "increased"))
(and (mvp2-filter props_xy "decreased")
(mvp2-filter props_yz "decreased")))
(or
(and (mvp2-filter props_xy "increased")
(mvp2-filter props_yz "decreased"))
(and (mvp2-filter props_xy "decreased")
(mvp2-filter props_yz "increased"))))]
[else #f]))
e*)))

(define mvp2-1hop-filter
(lambda (q direction)
Expand Down Expand Up @@ -257,6 +283,12 @@
curie_y]
[else (error "invalid form of returned edge" e)])))

(define (get-and-print-qualifiers qualifier)
(define qualifier-type (hash-ref qualifier 'qualifier_type_id #f))
(printf "qualifier-type: ~s\n" qualifier-type)
(define qualifier-value (hash-ref qualifier 'qualifier_value #f))
(printf "qualifier-value: ~s\n" qualifier-value)
(list qualifier-type qualifier-value))



113 changes: 63 additions & 50 deletions medikanren2/neo/neo-server/neo-server.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

(define DEFAULT_PORT 8384)

(define NEO_SERVER_VERSION "1.39")
(define NEO_SERVER_VERSION "1.40")

;; Maximum number of results to be returned from *each individual* KP,
;; or from mediKanren itself.
Expand Down Expand Up @@ -754,30 +754,30 @@
(define qualifier-set (hash-ref (car qualifier-constraints) 'qualifier_set #f))
(and qualifier-set
(list? qualifier-set)
(eq? 2 (length qualifier-set))

(eq? 3 (length qualifier-set))
(let ()
(define qualifier-a (car qualifier-set))
(define qualifier-a-type (hash-ref qualifier-a 'qualifier_type_id #f))
(printf "qualifier-a-type: ~s\n" qualifier-a-type)
(define qualifier-a-value (hash-ref qualifier-a 'qualifier_value #f))
(printf "qualifier-a-value: ~s\n" qualifier-a-value)

(define qualifier-b (cadr qualifier-set))
(define qualifier-b-type (hash-ref qualifier-b 'qualifier_type_id #f))
(printf "qualifier-b-type: ~s\n" qualifier-b-type)
(define qualifier-b-value (hash-ref qualifier-b 'qualifier_value #f))
(printf "qualifier-b-value: ~s\n" qualifier-b-value)

(match-define
(list qualifier-a-type qualifier-a-value)
(get-and-print-qualifiers (list-ref qualifier-set 0)))
(match-define
(list qualifier-b-type qualifier-b-value)
(get-and-print-qualifiers (list-ref qualifier-set 1)))
(match-define
(list qualifier-c-type qualifier-c-value)
(get-and-print-qualifiers (list-ref qualifier-set 2)))
(define expected-qualifiers (list "biolink:object_aspect_qualifier"
"biolink:object_direction_qualifier"
"biolink:qualified_predicate"))

(and qualifier-a-type
qualifier-a-value
qualifier-b-type
qualifier-b-value
(or
(and (equal? qualifier-a-type "biolink:object_aspect_qualifier")
(equal? qualifier-b-type "biolink:object_direction_qualifier"))
(and (equal? qualifier-b-type "biolink:object_aspect_qualifier")
(equal? qualifier-a-type "biolink:object_direction_qualifier"))))))))))))))))
qualifier-c-type
qualifier-c-value
(member qualifier-a-type expected-qualifiers)
(member qualifier-b-type expected-qualifiers)
(member qualifier-c-type expected-qualifiers))))))))))))))
'mvp2-gene]
[(and (equal? "inferred" knowledge_type)
(list? predicates)
Expand Down Expand Up @@ -811,30 +811,30 @@
(define qualifier-set (hash-ref (car qualifier-constraints) 'qualifier_set #f))
(and qualifier-set
(list? qualifier-set)
(eq? 2 (length qualifier-set))

(eq? 3 (length qualifier-set))
(let ()
(define qualifier-a (car qualifier-set))
(define qualifier-a-type (hash-ref qualifier-a 'qualifier_type_id #f))
(printf "qualifier-a-type: ~s\n" qualifier-a-type)
(define qualifier-a-value (hash-ref qualifier-a 'qualifier_value #f))
(printf "qualifier-a-value: ~s\n" qualifier-a-value)

(define qualifier-b (cadr qualifier-set))
(define qualifier-b-type (hash-ref qualifier-b 'qualifier_type_id #f))
(printf "qualifier-b-type: ~s\n" qualifier-b-type)
(define qualifier-b-value (hash-ref qualifier-b 'qualifier_value #f))
(printf "qualifier-b-value: ~s\n" qualifier-b-value)

(match-define
(list qualifier-a-type qualifier-a-value)
(get-and-print-qualifiers (list-ref qualifier-set 0)))
(match-define
(list qualifier-b-type qualifier-b-value)
(get-and-print-qualifiers (list-ref qualifier-set 1)))
(match-define
(list qualifier-c-type qualifier-c-value)
(get-and-print-qualifiers (list-ref qualifier-set 2)))
(define expected-qualifiers (list "biolink:object_aspect_qualifier"
"biolink:object_direction_qualifier"
"biolink:qualified_predicate"))

(and qualifier-a-type
qualifier-a-value
qualifier-b-type
qualifier-b-value
(or
(and (equal? qualifier-a-type "biolink:object_aspect_qualifier")
(equal? qualifier-b-type "biolink:object_direction_qualifier"))
(and (equal? qualifier-b-type "biolink:object_aspect_qualifier")
(equal? qualifier-a-type "biolink:object_direction_qualifier"))))))))))))))))
qualifier-c-type
qualifier-c-value
(member qualifier-a-type expected-qualifiers)
(member qualifier-b-type expected-qualifiers)
(member qualifier-c-type expected-qualifiers))))))))))))))
'mvp2-chem]
[else #f])]

Expand Down Expand Up @@ -1379,17 +1379,30 @@

(define (add-creative-edge! sub obj pred n aux-id)
(let ((id (string-append "medik:creative_edge#" (number->string n))))
(hash-set! edges (string->symbol id)
(hash 'attributes
(list
(auxiliary-graph-attribute aux-id))
'object obj
'predicate pred
'subject sub
'sources (list
(hash
'resource_id "infores:unsecret-agent"
'resource_role "primary_knowledge_source"))))
(if (or (eq? which-mvp 'mvp2-gene) (eq? which-mvp 'mvp2-chem))
(hash-set! edges (string->symbol id)
(hash 'attributes
(list
(auxiliary-graph-attribute aux-id))
'object obj
'predicate pred
'subject sub
'qualifiers (hash-ref (car (hash-ref qg_edge-hash 'qualifier_constraints)) 'qualifier_set)
'sources (list
(hash
'resource_id "infores:unsecret-agent"
'resource_role "primary_knowledge_source"))))
(hash-set! edges (string->symbol id)
(hash 'attributes
(list
(auxiliary-graph-attribute aux-id))
'object obj
'predicate pred
'subject sub
'sources (list
(hash
'resource_id "infores:unsecret-agent"
'resource_role "primary_knowledge_source")))))
id))

(define (add-auxiliary! edge* n)
Expand Down

0 comments on commit f11b901

Please sign in to comment.