-
Notifications
You must be signed in to change notification settings - Fork 0
/
simple_voila_ui.py
111 lines (73 loc) · 2.22 KB
/
simple_voila_ui.py
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
# -*- coding: utf-8 -*-
# ## Neurolang Voilà UI
import warnings # type: ignore
warnings.filterwarnings("ignore")
# +
from neurolang import regions # type: ignore
from neurolang.frontend import NeurolangDL, ExplicitVBR # type: ignore
from nlweb.viewers.query import QueryWidget
import nibabel as nib
from nilearn import datasets # type: ignore
# -
# ## Query Agent
# ### Functions
def init_agent():
"""
Set up the neurolang query runner (?) and add facts (?) to
the database
"""
nl = NeurolangDL()
@nl.add_symbol
def region_union(rs):
return regions.region_union(rs)
# TODO this can be removed after the bug is fixed
# currently symbols are listed twice
nl.reset_program()
return nl
# +
def add_destrieux(nl):
nl.new_symbol(name="destrieux")
destrieux_atlas = datasets.fetch_atlas_destrieux_2009()
destrieux_atlas_image = nib.load(destrieux_atlas["maps"])
destrieux_labels = dict(destrieux_atlas["labels"])
destrieux_set = set()
for k, v in destrieux_labels.items():
if k == 0:
continue
destrieux_set.add(
(
v.decode("utf8"),
ExplicitVBR.from_spatial_image_label(destrieux_atlas_image, k),
)
)
nl.add_tuple_set(destrieux_set, name="destrieux")
def add_subramarginal(nl):
nl.load_neurosynth_term_regions("supramarginal", name="neurosynth_supramarginal")
def add_def_mode_study(nl):
nl.load_neurosynth_term_study_ids(
term="default mode", name="neurosynth_default_mode_study_id"
)
def add_pcc_study(nl):
nl.load_neurosynth_term_study_ids(term="pcc", name="neurosynth_pcc_study_id")
def add_study_tf_idf(nl):
nl.load_neurosynth_study_tfidf_feature_for_terms(
terms=["default mode", "pcc"], name="neurosynth_study_tfidf"
)
# -
# ### Prepare engine
nl = init_agent()
add_destrieux(nl)
# add_subramarginal(nl)
# add_def_mode_study(nl)
# add_pcc_study(nl)
# add_study_tf_idf(nl)
# ## Query UI
# +
query = "".join(
"ans(study_id, term, tfidf):-neurosynth_default_mode_study_id(study_id),"
"neurosynth_pcc_study_id(study_id),"
"neurosynth_study_tfidf(study_id, term, tfidf)"
)
qw = QueryWidget(nl, query)
qw
# -