Python-api client
The MOLGENIS python client API allows you to retrieve, create, update and delete entities from within python.
You can install the Python REST Client as a package with pip
:
pip install molgenis-py-client
Now you can create a python script. To get started, you should import the Python client, connect to a molgenis server and login:
import molgenis.client
session = molgenis.client.Session("https://molgenis.mydomain.example/api/")
session.login("username","password")
Always put the import and molgenis.Session in your script to make the api work.
Overview example
import molgenis.client
session = molgenis.client.Session("https://molgenis.mydomain.example/api/")
session.login("username","password")
my_table = session.get("package_entityName")
print(my_table)
To get a full overview of all functions in the python client, you can look at the examples on GitHub.
Methods
login
session.login(username,password)
Login to the MOLGENIS REST API
Argument | Description | Required | Default |
---|---|---|---|
username |
Username for a registered molgenis user | yes | |
password |
Password for the user | yes |
logout
session.logout()
Logout from the MOLGENIS REST API and destroy the session.
get_by_id
session.get_by_id("tableId", "rowId")
Retrieves a single entity row from an entity repository.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
id |
The value for the idAttribute of the entity | yes | |
attributes |
The list of attributes to retrieve | no | All attributes |
expand |
The attributes to expand | no | None |
get
session.get("package_entityName")
Retrieves entities and returns the result in a dataframe.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
q |
Query string in rsql/fiql format (see below) | no | None |
start |
The index of the first row to retrieve (zero indexed) | no | 0 |
num |
The maximum number of rows to return (max 10000) | no | 100 |
attributes |
The list of attributes to retrieve | no | All attributes |
sortColumn |
attributeName of the column to sort on | no | None |
sortOrder |
The order to sort in | no | None |
Supported RSQL/FIQL query operators (see https://github.com/jirutka/rsql-parser)
Operator | Symbol |
---|---|
Logical AND | ; or and |
Logical OR | , or or |
Group | ( and ) |
Equal to | == |
Less then | =lt= or < |
Less then or equal to | =le= or <= |
Greater than | =gt= or > |
Greater tha or equal to | =ge= or >= |
Argument can be a single value, or multiple values in parenthesis separated by comma. Value that doesn’t contain any reserved character or a white space can be unquoted, other arguments must be enclosed in single or double quotes.
Examples
session.get("celiacsprue")
session.get("celiacsprue", num = 100000, start = 1000)
session.get("celiacsprue", attributes = c("Individual", "celiac_gender"))
session.get("celiacsprue", q = "(celiac_weight>=80 and celiac_height<180) or (celiac_gender==Female)")
session.get("celiacsprue", q = "(celiac_weight>=80;celiac_height<180),(celiac_gender==Female)")
add
session.add('Person', firstName='Jan', lastName='Klaassen')
Creates a new instance of an entity (i.e. a new row of the entity data table) and returns the id.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
files |
Dictionary containing file attribute values for the entity row. The dictionary should for each file attribute map the attribute name to a tuple Containing the file name and an input stream. | no | Empty dictionary |
data |
Dictionary mapping attribute name to non-file attribute value for the entity row, gets merged with the kwargs argument | no | Empty dictionary |
**kwargs |
Keyword arguments get merged with the data argument | no |
Examples
session.add('Person', {'firstName': 'Jan', 'lastName':'Klaassen'})
session.add('Plot', files={'image': ('expression.jpg', open('~/first-plot.jpg','rb')),
'image2': ('expression-large.jpg', open('/Users/me/second-plot.jpg', 'rb'))},
data={'name':'IBD-plot'})
update_one
session.update_one("entityType", "id", "attribute", "newValue")
Updates a value of a specified attribute in a specified row in a specified entityType.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
id |
The value for the idAttribute of the entity | yes | |
attr |
Attribute to update | yes | |
value |
New value of the attribute | yes |
add_all
session.add_all(entity, entities)
Creates new instances of an entity (i.e. adds new rows to the entity data table) and returns the ids.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
entities |
List of dictionaries with the attributes of the entities | yes |
Example
update = [{'id': '157', 'type': 'gnome', 'year': '1998'},
{'id': '158', 'type': 'fairy', 'year': '1998'},
{'id': '159', 'type': 'unicorn', 'year': '1998'}]
session.add_all("demo_sightings", update)
delete
session.delete(entity, id)
Deletes row based on its id.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
id |
Id of the entity that should be deleted | yes |
delete_list
session.delete_list(entity, entities)
Deletes a number of rows based on a list of id's.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
entities |
List of id's of entities that should be deleted | yes |
upload_zip
session.upload_zip("pathtozipfile")
This function uploads a zip file based on the EMX format.
Argument | Description | Required | Default |
---|---|---|---|
meta_data_zip |
A zip file containing an attribute, entities, packages file (tsv/csv) to specify the meta data and optionally data defined in the meta data files | yes |
get_entity_meta_data
session.get_entity_meta_data(entity)
Retrieves the metadata for an entity repository.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes |
get_attribute_meta_data
session.get_attribute_meta_data(entity, attribute)
Retrieves the metadata for a single attribute of an entity repository.
Argument | Description | Required | Default |
---|---|---|---|
entity |
Fully qualified name of the entity | yes | |
attribute |
Name of the attribute | yes |