-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo_allinone.py
143 lines (110 loc) · 3.85 KB
/
demo_allinone.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import sys
from termcolor import colored
# import subprocess
import os
action_order = ["setup", "crawl", "curate", "quit"]
def ask_user_input():
input_str = "Should I continue with the next demo step ({})? [y/n/all] \n > ".format(action_order[0])
return input(input_str)
def comment(text):
return colored(text, "green", attrs=["bold", "underline"])
def warning(text):
return colored(text, "yellow", "on_grey")
def new_line():
print("")
def setup_demo():
"""
Setup the containers for the demo
"""
print(comment("Alright! I'll set up a local instance of MarRef database and prepare the crawler"))
new_line()
# subprocess.check_output(["./setup.sh", "--clean"], shell=True)
os.system("./setup.sh --clean")
new_line()
print(comment("Everything should be up and running!"))
print(comment("You can check on http://localhost:8080/ your tiny local version of MarRef"))
new_line()
def populate_biosd():
"""
Populate BioSamples instance with samples if not already available
"""
print(comment("I'll populate BioSamples with the necessary files"))
new_line()
os.system("docker-compose up biosd-populator")
new_line()
def do_crawl():
"""
Crawl marref to extract metadata
"""
print(comment("I'll now proceed by crawling the MarRef local instance"))
print(comment("Let's start by checking which pages I should crawl"))
# subprocess.check_output(['docker-compose up bsbc-crawl'], shell=True)
new_line()
os.system("docker-compose up bsbc-crawl")
new_line()
print(comment("I'll now proceed by extracting the Bioschemas content from the pages"))
new_line()
os.system("docker-compose up bsbc-extract")
new_line()
# subprocess.check_output(['docker-compose up bsbc-extract'], shell=True)
print(comment("Finally, just for the sake of the demo, I'll add the results to a search index"))
new_line()
os.system("docker-compose up bsbc-index")
new_line()
# subprocess.check_output(['docker-compose up bsbc-index'], shell=True)
print(comment("Ok...lot of work here! But I'm done!"))
print(comment("Try to search for something in solr at http://localhost:8984/solr"))
new_line()
def do_curation():
"""
Curate BioSamples using the crawled metadata
"""
print(comment("I'll now proceed creating the BioSamples curation objects"))
print(comment("Once an object is created, I'll post it to the local version of Biosamples"))
# subprocess.check_output(['docker-compose', 'up', 'biosd-curate'], shell=True)
new_line()
os.system("docker-compose up biosd-curate")
new_line()
print(comment("Done! You should be able to see all my precious work over to "
"http://localhost:8081/biosamples/samples"))
print(comment("Go have a look"))
new_line()
def exit_demo():
"""
Exit the demo
"""
new_line()
print(comment("Hope you had fun, bye bye!"))
sys.exit()
def do_action(name):
if name == "setup":
setup_demo()
elif name == "populate":
populate_biosd()
elif name == "crawl":
do_crawl()
elif name == "curate":
do_curation()
elif name == "quit":
exit_demo()
if __name__ == "__main__":
print("")
print(comment("Good morning user!"))
print("")
while True:
uin = ask_user_input()
new_line()
if uin.lower() not in ["y", "n", "all"]:
print("Sorry, I'm dumb and I don't know what to do with {}...".format(uin))
new_line()
uin = ask_user_input()
uin = uin.lower()
if uin == "all":
while len(action_order) > 0:
next_step = action_order.pop(0)
do_action(next_step)
elif uin == "y":
next_step = action_order.pop(0)
do_action(next_step)
else:
exit_demo()