query mriqc api with Python
In [2]:
def get_iqms(modality, versions=None, software='mriqc'):
"""
Grab all iqms for the given modality and the list of versions
"""
url_root = 'https://mriqc.nimh.nih.gov/api/v1/{modality}?{query}'
page = 1
dfs = []
if versions is None:
versions = ['*']
for version in versions:
while True:
query = []
if software is not None:
query.append('"provenance.software":"%s"' % software)
if version != '*':
query.append('"provenance.version":"%s"' % version)
page_url = url_root.format(
modality=modality,
query='where={%s}&page=%d' % (','.join(query), page)
)
with urllib.request.urlopen(page_url) as url:
data = json.loads(url.read().decode())
dfs.append(json_normalize(data['_items']))
if 'next' not in data['_links'].keys():
break
else:
page += 1
# Compose a pandas dataframe
return pd.concat(dfs, ignore_index=True)
def plot_measure(data, xlabel=None, label=None, ax=None, min=None, max=None):
"""
Distribution plot of a given measure
"""
sns.distplot(data, ax=ax, label=label)
if xlabel is not None:
ax.set_xlabel(xlabel)
if min is None:
min = np.percentile(data, 0.5)
if max is None:
max = np.percentile(data, 99.5)
ax.set_xlim((min, max))