In [1]:
%load_ext noworkflow
nip = %now_ip
In [2]:
def first(x):
return next(x)
In [3]:
def extract(trial_id, name, param, attr):
t = nip.Trial(trial_id)
# SQL query
sql = first(nip.persistence.query("""
SELECT f.id
FROM function_activation f
INNER JOIN object_value o
ON f.id = o.function_activation_id
WHERE f.name = '{}'
AND o.value = '{}'
AND f.trial_id = '{}'
""".format(name, param, trial_id)))
act_id = sql['id']
# Prolog query
prolog = first(t.trial_prolog.query("""
access_id({0}, {1}, Y),
hash_id({0}, Y, X, after)
""".format(trial_id, act_id)))
hash = prolog['X']
# Create new file with old content
content = nip.persistence.get(hash)
with open('.temp.dat', 'w') as f:
f.write(content)
# Call external program to get result
result = !./extractor .temp.dat $attr
# Return result
return '\n'.join(result)
In [4]:
extract(1, 'z', '2', '1')
Out[4]:
In [5]:
extract(1, 'y', '1', 'ALL')
Out[5]:
In [6]:
extract(2, 'y', '1', 'ALL')
Out[6]: