Python client reference

class nmpi.Client(username=None, password=None, job_service='https://nmpi.hbpneuromorphic.eu/api/v2/', quotas_service='https://quotas.hbpneuromorphic.eu', authorization_endpoint='https://validation-v2.brainsimulation.eu', user_info_endpoint='https://iam.ebrains.eu/auth/realms/hbp/protocol/openid-connect/userinfo', token=None, verify=True)

Client for interacting with the EBRAINS Neuromorphic Computing Platform, developed by the Human Brain Project.

This includes submitting jobs, tracking job status and retrieving the results of completed jobs.

Arguments:
username, password

credentials for accessing the platform. Not needed in Jupyter notebooks within the EBRAINS Collaboratory.

job_service

the base URL of the platform Job Service. Generally the default value should be used.

quotas_service

the base URL of the platform Quotas Service. Generally the default value should be used.

token

when you authenticate with username and password, you will receive a token which can be used in place of the password until it expires.

verify

in case of problems with SSL certificate verification, you can set this to False, but this is not recommended.

user_info

Information about the current user, as retrieved from the Collaboratory

submit_job(source, platform, collab_id, config=None, inputs=None, command='run.py {system}', tags=None, wait=False)

Submit a job to the platform.

Arguments:
source

the Python script to be run, the URL of a public version control repository containing Python code, a zip file containing Python code, or a local directory containing Python code.

platform

the neuromorphic hardware system to be used. One of: “BrainScaleS”, “BrainScaleS-2”, “SpiNNaker”, “Spikey”.

collab_id

the ID of the collab to which the job belongs

config

(optional) a dictionary containing configuration information for the hardware platform. See the Platform Guidebook for more details.

inputs

a list of URLs for datafiles needed as inputs to the simulation.

command

(optional) the path to the main Python script relative to the root of the repository or zip file. Defaults to “run.py {system}”.

tags

(optional) a list of tags (strings) describing the job.

wait

(default False) if True, do not return until the job has completed, if False, return immediately with the job id.

Returns:

The job id as a relative URI unless wait=True, in which case returns the job as a dictionary.

Notes:

If the source argument is a directory containing Python code, the directory contents will be uploaded to Collab storage into a folder named according to the property client.collab_source_folder (default: “source_code”)

job_status(job_id)

Return the current status of the job with ID job_id (integer or URI).

get_job(job_id, with_log=True)

Return full details of the job with ID job_id (integer or URI).

remove_completed_job(job_id)

Remove a job from the interface.

The job is hidden rather than being permanently deleted.

remove_queued_job(job_id)

Remove a job from the interface.

The job is hidden rather than being permanently deleted.

queued_jobs(verbose=False)

Return the list of jobs belonging to the current user in the queue.

Arguments:
verbose

if False, return just the job URIs, if True, return full details.

completed_jobs(collab_id, verbose=False)

Return the list of completed jobs in the given collab.

Arguments:
verbose

if False, return just the job URIs, if True, return full details.

download_data(job, local_dir='.', include_input_data=False)

Download output data files produced by a given job to a local directory.

Arguments:
job

a full job description (dict), as returned by get_job().

local_dir

path to a directory into which files shall be saved.

include_input_data

also download input data files.

copy_data_to_storage(job_id, destination='drive')

Copy the data produced by the job with id job_id to the EBRAINS Drive or to the HPAC Platform. Note that copying data to an HPAC site requires that you have an account for that site.

Example:

To copy data to the JURECA machine:

client.copy_data_to_storage(90712, "JURECA")

To copy data to the EBRAINS Drive:

client.copy_data_to_storage(90712, "drive")
create_data_item(url)

Register a data item with the platform.

create_resource_request(title, collab_id, abstract, description=None, submit=False)

Create a new resource request. By default, it will not be submitted.

edit_resource_request(request_id, title=None, abstract=None, description=None, submit=False)

Edit and/or submit an unsubmitted resource request

list_resource_requests(collab_id, status=None)

Return a list of resource requests for the Neuromorphic Platform

list_quotas(collab_id)

Return a list of quotas for running jobs on the Neuromorphic Platform

my_collabs()

Return a list of collabs of which the user is a member.