Python-api client

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

Last updated