Introduction to CI Template

Basic Setup

You need to change IP variable to point to your Docker host.


In [116]:
IP = '192.168.99.100'
BASE = 'http://' + IP + '/v1/'  # You need to change this to your service server

import requests
import json

def jprint(data):
    print(json.dumps(data, indent=4))

# Change this to  your Docker container's IP
HEADERS = {'Content-Type': 'application/json'}

In [117]:
# Show list of available services:

services_url = BASE + 'services'
print(services_url)

res = requests.get(services_url)
jprint(res.json())


http://192.168.99.100/v1/services
[
    {
        "portNumber": "5556",
        "parameters": {
            "network_url": {
                "description": "URL of the source SIF network file.",
                "required": true,
                "type": "string"
            }
        },
        "description": "Kernel generator service.",
        "serviceName": "kernel"
    },
    {
        "portNumber": "5548",
        "parameters": [
            {
                "description": "arg",
                "required": true,
                "name": "arg",
                "type": "string"
            }
        ],
        "description": "Shell script worker example",
        "serviceName": "shell"
    },
    {
        "portNumber": "5557",
        "parameters": {
            "kernel_url": {
                "description": "URL of the pre-computed kernel file.",
                "required": true,
                "type": "string"
            },
            "network_url": {
                "description": "URL of the SIF network file for the kernel.",
                "required": true,
                "type": "string"
            },
            "query": {
                "description": "Array of gene names to be used for sub network search.",
                "required": true,
                "type": "array"
            }
        },
        "description": "Heat diffusion sub network finder service.",
        "serviceName": "subnet"
    },
    {
        "portNumber": "5561",
        "parameters": [
            {
                "description": "Input file location",
                "required": true,
                "name": "inputFile",
                "type": "string"
            }
        ],
        "description": "NBS worker sample",
        "serviceName": "nbs"
    },
    {
        "portNumber": "5559",
        "parameters": [
            {
                "description": "Any string message to be returned.",
                "required": true,
                "name": "message",
                "type": "string"
            }
        ],
        "description": "Sample Python worker to display greeting message",
        "serviceName": "hello-python"
    },
    {
        "portNumber": "5549",
        "parameters": [
            {
                "description": "Unique network ID in NDEx",
                "required": true,
                "name": "network_id",
                "type": "string"
            }
        ],
        "description": "Sample Python worker to process network from NDEx",
        "serviceName": "ndex"
    },
    {
        "portNumber": "5560",
        "parameters": [
            {
                "description": "Greeting message",
                "required": true,
                "name": "message",
                "type": "string"
            }
        ],
        "description": "Sample Java worker to display greeting message",
        "serviceName": "hello-java"
    }
]

In [118]:
res = requests.get(BASE + 'services/hello-python')
jprint(res.json())


{
    "portNumber": "5559",
    "parameters": [
        {
            "description": "Any string message to be returned.",
            "required": true,
            "name": "message",
            "type": "string"
        }
    ],
    "description": "Sample Python worker to display greeting message",
    "serviceName": "hello-python"
}

In [120]:
query = {
    'message': "sample message 1"
}

res = requests.post(BASE + 'services/hello-python', data=json.dumps(query), headers=HEADERS)

jprint(res.json())


{
    "job_id": "2805b81a-ef07-4889-b121-abc054a9851a",
    "status": "queued"
}

In [121]:
query = {
    # MAPK Signaling Pathway network
    'network_id': '99bea41b-6194-11e5-8ac5-06603eb7f303'
}

res = requests.post(BASE + 'services/ndex', data=json.dumps(query), headers=HEADERS)

jprint(res.json())


{
    "job_id": "60384030-e43d-498a-b152-f94c07f28e56",
    "status": "queued"
}

In [122]:
query = {
    'gene_id': 'brca1_human'
}

res = requests.post(BASE + 'services/shell', data=json.dumps(query), headers=HEADERS)

jprint(res.json())


{
    "job_id": "f90951a1-c24c-4b6c-856e-da4503f4bd43",
    "status": "queued"
}

In [123]:
res = requests.get(BASE + 'queue')
job_id1 = res.json()[0]['job_id']
jprint(res.json())


[
    {
        "job_id": "a5b25a5f-7c64-4df7-9d6d-8ff5baeadcbf",
        "status": "finished"
    },
    {
        "job_id": "f12142a3-bbc6-418a-8f1b-19c4e238a3a3",
        "status": "finished"
    },
    {
        "job_id": "6ef309d7-9ea8-43be-807d-a1052015dc06",
        "status": "finished"
    },
    {
        "job_id": "60384030-e43d-498a-b152-f94c07f28e56",
        "status": "finished"
    },
    {
        "job_id": "eeba02b3-8025-4b84-9fe1-9466f8d40d37",
        "status": "finished"
    },
    {
        "job_id": "2805b81a-ef07-4889-b121-abc054a9851a",
        "status": "finished"
    },
    {
        "job_id": "f90951a1-c24c-4b6c-856e-da4503f4bd43",
        "status": "finished"
    },
    {
        "job_id": "d37ced5c-2216-400d-82b1-60e446ccbf43",
        "status": "finished"
    },
    {
        "job_id": "5f09b9da-6c80-4c2f-961d-d730e78f17b1",
        "status": "finished"
    },
    {
        "job_id": "900ec65d-15e5-466f-9c33-5d9d861a77a3",
        "status": "finished"
    },
    {
        "job_id": "5725be45-1819-4632-9526-b53a7135c9aa",
        "status": "finished"
    },
    {
        "job_id": "5cfd4ce7-9dbc-4f69-b354-1be73c7e1c8d",
        "status": "finished"
    },
    {
        "job_id": "d4a419ea-9555-4b13-abf2-113c777b629e",
        "status": "finished"
    },
    {
        "job_id": "e09daf77-2e98-4f55-a741-d3b571c3a75f",
        "status": "finished"
    }
]

In [124]:
result_url = BASE + 'queue/' + job_id1 + '/result'
print(result_url)
res = requests.get(result_url)
result_str = res.json()

# jprint(result_str)


http://192.168.99.100/v1/queue/a5b25a5f-7c64-4df7-9d6d-8ff5baeadcbf/result

In [108]:
# Deletion
res = requests.delete(BASE + 'queue/' + job_id1)
jprint(res.json())


{
    "job_id": "f93a36f2-b8ce-48a6-80eb-7b085d56934c",
    "status": "deleted"
}

In [111]:
res = requests.get(BASE + 'queue')
jprint(res.json())


[]

In [110]:
# Delete All jobs and results
res = requests.delete(BASE + 'queue')
jprint(res.json())


{
    "deletedJobs": [
        "705f291b-5e6e-4135-abf9-2adcd37c95e7",
        "29e8f2e6-2711-4fd3-9873-12dfb53d3b15",
        "d1f168bc-8b4c-4c59-98ce-43f01415067c",
        "db6b146d-30d8-447d-afaf-aae2efdda9bd",
        "1d3f9a2a-752b-4a21-b521-a34cad1436be",
        "722b9783-945d-4d3e-a528-e47a0f81c781",
        "cdea76ac-2a73-40f0-bac7-8f40df58ed59",
        "8b836b9d-b8c1-4181-99d8-fca21a06ec3c",
        "6a8abf2d-6704-4b7e-9ba9-410f195f2d29",
        "7cd23266-2fc4-46c1-b503-cddcc8312ad5"
    ]
}