Updating dataset databases

Setup

[6]:
import json, pprint
from metaspace import SMInstance

sm = SMInstance()
sm
[6]:
SMInstance(https://metaspace2020.eu/graphql)
[5]:
# This will prompt you to enter your API key and will save it to a config file.
# Note that API keys should be kept secret like passwords.
sm.save_login()

Update dataset

[11]:
def databases_as_tuples(database_details):
    return [(db['name'], db['version']) for db in database_details]

Existing databases

[12]:
from pprint import pprint

dataset_id = '2017-05-17_19h49m04s'
dataset = sm.dataset(id=dataset_id)
pprint(databases_as_tuples(dataset.database_details))
[('HMDB', 'v4'),
 ('core_metabolome_v3', '2020-03-30'),
 ('ChEBI', '2016'),
 ('core_metabolome_v2', '2020-02-28')]

Specify list of new databases against which you want to analyze your dataset

[ ]:
# Available databases:
# Please notice that if you choose more than 3 databases the processing may take a while

# ("BraChemDB", "2018-01")
# ("ChEBI", "2018-01")
# ("HMDB", "v4")
# ("HMDB-cotton", "v4")
# ("HMDB-endogenous", "v4")
# ("LipidMaps", "2017-12-12")
# ("PAMDB", "v1.0")
# ("SwissLipids", "2018-02-02")
# ("core_metabolome_v3", "2020-03-30")

new_databases = [('ChEBI', '2018-01'), ('LipidMaps', '2017-12-12')]

Update the dataset

[ ]:
ds = sm.dataset(id=dataset_id)
sm.update_dataset_dbs(dataset_id, new_databases, ds.adducts)

Update all datasets in project

[ ]:
# "Whole body imaging, animal models" project
for ds in sm.dataset(project='a493c7b8-e27f-11e8-9d75-3bb2859d3748'):
    databases = databases_as_tuples(ds.database_details)
    print(ds.name, databases)

    if ('core_metabolome_v3', '2020-03-30') not in databases:
        databases.append(('core_metabolome_v3', '2020-03-30'))

    sm.update_dataset_dbs(ds.id, databases, ds.adducts)