Braincube API Sample Notebook - Quick start
This notebook outlines how to use the Braincube API in order to start using it using a basic example.
In this notebook, we'll check :
- How to set up your python environment
- How to authenticate using a personal access token
- How to start querying the data into a dataframe
Set Up
Install necessary packages as follows if not already installed:
In [ ]:
%%capture
#!pip install py_client-0.0.0/py_client-0.0.0-py3-none-any.whl
!pip install braincube_connector
!pip install braincube-token-getter
Check what packages are installed on the current environnement
In [ ]:
%%capture
!pip freeze
Setting up python environnement
In [ ]:
from braincube_connector import client
from braincube_connector import braincube
In [ ]:
import json
import pandas as pd
Authentication
Since version 2.2.0, the authentication uses a personal access token (PAT).
In order to create a PAT, you need to go in your braincube personal menu > Account > Access tokens > +/Add
The scopes of the token should include BRAINCUBE and SSO_READ.
Then two options exist to pass the PAT to the braincube_connector:
Using a configuration dictionary when creating a client:
from braincube_connector import client
client.get_instance(config_dict={"api_key":"", "domain":"mybraincube.com"})
Using a configuration file:
from braincube_connector import client
client.get_instance("config_file"="myfile.json")
myfile.json content :
{"api_key":"<my_personal_access_token>","domain":"mybraincube.com"}
client.get_instance(config_file="{{PATH_OF_CONFIG}}/config_api.json")
client.request_ws()
Out [ ]:
/content
Client(domain=mybraincube.com) at 0x7f8fbbffb780
GET Requests - Get Braincube data and put them in a pandas DataFrame
Use the Braincube connector to get information about your server (name, memory base, etc) for use in your code.
Information on functions available is found here: https://pypi.org/project/braincube-connector/
For this example, we assume you know the server name but need to lookup the base ID for future use.
In [ ]:
bc = braincube.get_braincube("demo")
bc.get_memory_base_list()
In [ ]:
# You want to work on Boiler House Memory base which is id 20
mb = bc.get_memory_base("20")
print(mb)
MemoryBase(name=Boiler House)
All variables have their own metadata filled with the Dataproperties
In [ ]:
var= list_variables[0]
var.get_metadata()
Out [ ]:
{'bcId': 2000077,
'id': 2000077,
'local': 'AAA_TEST_REG_LIN',
'owner': {'bcId': 0,
'email': 'no-reply@braincube.com',
'fullName': 'iplwadmin',
'id': 0,
'uuid': '877be3ec-06a0-44e7-9921-26a80ba6429e'},
'referenceDate': {'bcId': 2000001,
'id': 2000001,
'local': 'DATE',
'standard': 'DATE',
'tag': 'DATE'},
'standard': 'AAA_TEST_REG_LIN',
'tag': 'AAA_TEST_REG_LIN',
'type': 'NUMERICAL'}
In [ ]:
# We get all variables id in a list and we create the header of our dataframe
# based on the id and each name
list_variables = mb.get_variable_list()
list_variables_id = list(map(lambda x: x.get_bcid(), list_variables))
In [ ]:
# To have multiple headers that uses local / tag / standard names of each variables
list_variables_local = list(map(lambda x: x.get_metadata()["local"], list_variables))
list_variables_tag = list(map(lambda x: x.get_metadata()["tag"], list_variables))
list_variables_std = list(map(lambda x: x.get_metadata()["standard"], list_variables))
list_of_lists = [list_variables_id,list_variables_local,list_variables_tag,list_variables_std]
header = pd.MultiIndex.from_arrays(list_of_lists, names=['id','local','tag','standard'])
Filter the data for your dataset in order to filter them, you have to put the braincube long id usually : mb{memory base id}/d{id of variable}
In [ ]:
# for example between 2 dates : Format is yyyyMMdd_HHmmss
filters = [
{
"BETWEEN": [ "mb20/d2000001", "20201001_000000", "20201010_000000"]
}
]
In [ ]:
# Getting data
try:
data = mb.get_data(list_variables_id,filters=filters)
except Exception as e:
print(e)
In [ ]:
# Transform into a dataframe with the good headers
df = pd.DataFrame(data)
df.columns=header
# Show the first lines
df.head()
| id | 2000077 | 2000002 | 2000042 | 2000082 | 2000083 | 2000034 | 2000061 | 2000001 | 2000040 | 2000041 | 2000078 | 2000079 | 2000051 | 2000074 | 2000058 | 2000081 | 2000030 | 2000003 | 2000004 | 2000005 | 2000006 | 2000049 | 2000008 | 2000009 | 2000010 | 2000011 | 2000012 | 2000014 | 2000016 | 2000017 | 2000019 | 2000020 | 2000021 | 2000022 | 2000023 | 2000024 | 2000025 | 2000026 | 2000027 | 2000028 | 2000029 | 2000046 | 2000007 | 2000031 | 2000018 | 2000015 | 2000013 | 2000073 | 2000037 | 2000039 | 2000036 | 2000038 | 2000044 | 2000053 | 2000071 | 2000065 | 2000080 | 2000066 | 2000076 | 2000050 | 2000043 | 2000033 | 2000032 | 2000052 | 2000062 | 2000075 | 2000054 | 2000047 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| local | AAA_TEST_REG_LIN | BOILER OPERATIONAL | BOILER_OPNL | BOILER STATUS | BOILER_STAT | Briana test - calc var with cat | Briana test - calc var with cat to num | Boiler Performance | PURGE AIR COMPRESSOR / FUEL FEEDING SCREW 1 | CALC INPUT01-copy | DATE | DATE - Weekday | DATE | WEEKDAY | DEMO_VAR_CALC | DEMO_VAR_CALC-copy | EVENTS | EVAPORATORS | Empty Discrete Value | FLOW OVERHEATED STEAM NOT BETWEEN 25 AND 35 | IDMX | INPUT 26 | FUEL FEEDING SCREW 1 | INPUT01 | PURGE AIR-COMPRESSOR | INPUT02 | FLOW OVERHEATED STEAM | INPUT03 | FLOW SECONDARY AIR | INPUT04 | FLOW SECONDARY AIRx3600 | INPUT04x3600 | FLOW NATURAL GAS | INPUT06 | FLOW CONTINUOUS BLOWDOWN | INPUT07 | PRESSURE DIFFRENCE NATURAL GAS FILTER | INPUT08 | PRESSURE EXHAUST | INPUT09 | O2 | INPUT10 | SOLIDS | INPUT12 | TEMP COOLER | INPUT13 | TEMP FURNACE | INPUT14 | TEMP SAND BED CENTER | INPUT15 | TEMP 1 | INPUT16 | TEMP 3 | INPUT17 | TEMP AIR | INPUT18 | TEMP AIR INTAKE SECONDARY FAN | INPUT19 | TEMP FLUE GAS BEFORE ECONOMISER RIGHT | INPUT20 | TEMP FLUE GAS BAGHOUSE FILTER RIGHT | INPUT21 | TEMP 2 | INPUT22 | TEMP MES CONDENSATE SOOT BLOWER SYSTEM | INPUT23 | FLOW FILTRATE | INPUT24 |
| tag | AAA_TEST_REG_LIN | BOILER_OPNL | BOILER_STAT | BOILER_STAT-copy | BOILER_STAT-copy-copy | Boiler Performance | CALC INPUT | DATE | DATE - Weekday | DATE | WEEKDAY | DEMO_VAR_CALC | DEMO_VAR_CALC-copy | EVENTS | EVAPORATORS | Empty Discrete Value | FLOW OVERHEATED STEAM NOT BETWEEN 25 AND 35 | IDMX | INPUT 26 | INPUT01 | INPUT02 | INPUT03 | INPUT04 | INPUT04x3600 | INPUT06 | INPUT07 | INPUT08 | INPUT09 | INPUT10 | INPUT12 | INPUT13 | INPUT14 | INPUT15 | INPUT16 | INPUT17 | INPUT18 | INPUT19 | INPUT20 | INPUT21 | INPUT22 | INPUT23 | INPUT24 | INPUT25 | INPUT26 | INPUT31 | Month | OUTPUT01 | OUTPUT02 | OUTPUT03 | OUTPUT03-copy | Output 1-copy | Output 2-copy | Output 3-copy | Overfire Air System ON/OFF | PAC_STATUS | RATIO | CO / NOx | RATIO | CO / NOx CAV | Ratio NOx CO | Rendement - Test | SAND BED TEMP STABILITY | COMPLIANCE % (X<35 = 100%) | TEST_Demo - Régression linéaire - 17/03/20 10:41 | TRIAL | BIOCIDE VXD | TRIAL | CHELANT XYZ |
| standard | AAA_TEST_REG_LIN | BOILER OPERATIONAL | BOILER STATUS | BOILER STATUS-copy | BOILER STATUS-copy-copy | Boiler Performance | PURGE AIR COMPRESSOR / FUEL FEEDING SCREW 1 | DATE | DATE - Weekday | DATE - WEEKDAY | DEMO_VAR_CALC | DEMO_VAR_CALC-copy | EVENTS | EVAPORATORS | Empty Discrete Value | FLOW OVERHEATED STEAM NOT BETWEEN 25 AND 35 | IDMX | FLOW WOOD | FUEL FEEDING SCREW 1 | PURGE AIR COMPRESSOR | FLOW OVERHEATED STEAM | FLOW SECONDARY AIR | FLOW SECONDARY AIRx3600 | FLOW NATURAL GAS | FLOW CONTINUOUS BLOWDOWN | PRESSURE DIFFRENCE NATURAL GAS FILTER | PRESSURE EXHAUST | O2 | SOLIDS | TEMP COOLER | TEMP FURNACE | TEMP SAND BED CENTER | TEMP 1 | TEMP 3 | TEMP AIR | TEMP AIR INTAKE SECONDARY FAN | TEMP FLUE GAS BEFORE ECONOMISER RIGHT | TEMP FLUE GAS BAGHOUSE FILTER RIGHT | TEMP 2 | TEMP MES CONDENSATE SOOT BLOWER SYSTEM | FLOW FILTRATE | TEMP DRY SLUDGE | OPERATING SPECIFICATION | FLOW AMMONIA GAS | Month | SAND BED TEMP STABILITY | CO | NOx | NOx-copy | STABILITY TEMP SAND BED PERFORMANCE <30 | CO PERFORMANCE <1.3 | NOx PERFORMANCE <160 | Overfire Air System ON/OFF | PURGE AIR COMPRESSOR HI/LO | RATIO | CO / NOx | RATIO | CO / NOx CAV | Ratio NOx CO | Rendement - Test | SAND BED TEMP STABILITY | COMPLIANCE % (X<35 = 100%) | TEST_Demo - Régression linéaire - 17/03/20 10:41 | TRIAL | BIOCIDE VXD | TRIAL - CHELANT XYZ | Weekday | Year Week |
| 0 | 1203.064576 | 1.0 | Steady | None | 0.08 | 0.0 | 1.458418 | 20201001_000000 | NaN | THURSDAY | 203.558 | 5.93 | 01 ORIGINAL STATE | 35.6 | 245292 | NaN | 49.3 | 71.9 | 35.6 | 1.55 | 5580 | 1399 | 7.52 | 0 | 1017 | 5.93 | NaN | 348 | 1167 | 815 | 790 | 830 | 34.3 | 16.5 | 384 | 157.0 | 868 | 277.0 | 6592.0 | 56.5 | COND E | 73.8 | NaN | 35 | 0.08 | 148.2 | 131.887671 | 0.0 | 1.0 | 1.0 | ON | 02 | HIGH | 0.000540 | 0.000540 | 1852.500000 | 0.025447 | 100 | NaN | 00 | NULL | None | NaN | 202040 | NaN | 1083.211385 | 0.172604 | |
| 1 | 1179.709353 | 1.0 | Steady | None | 0.07 | 0.0 | 1.549356 | 20201001_001000 | NaN | THURSDAY | 204.206 | 7.01 | 01 ORIGINAL STATE | NaN | 245293 | NaN | 46.6 | 72.2 | 28.0 | 1.59 | 5724 | 1401 | 5.43 | 0 | 1017 | 7.01 | NaN | 343 | 1104 | 816 | 793 | 830 | 34.2 | 16.4 | 378 | 158.0 | 840 | 367.0 | 6816.0 | 56.6 | COND E | 74.9 | NaN | 34 | 0.07 | 127.5 | 131.872603 | 0.0 | 1.0 | 1.0 | ON | 02 | HIGH | 0.000549 | 0.000549 | 1821.428571 | 0.019986 | 100 | NaN | 00 | NULL | None | NaN | 202040 | NaN | 1073.079305 | 0.135562 | |
| 2 | 1132.774106 | 1.0 | Steady | None | 0.07 | 0.0 | 1.537313 | 20201001_002000 | NaN | THURSDAY | 204.170 | 6.95 | 01 ORIGINAL STATE | NaN | 245294 | NaN | 46.9 | 72.1 | 26.1 | 1.55 | 5580 | 1397 | 19.10 | 0 | 1017 | 6.95 | NaN | 343 | 1061 | 817 | 797 | 829 | 34.1 | 16.4 | 361 | 159.0 | 812 | 399.0 | 6821.0 | 56.6 | COND E | 73.7 | NaN | 32 | 0.07 | 92.1 | 131.220548 | 0.0 | 1.0 | 1.0 | ON | 02 | HIGH | 0.000760 | 0.000760 | 1315.714286 | 0.018683 | 100 | NaN | 00 | NULL | None | NaN | 202040 | NaN | 1052.258565 | 0.126725 | |
| 3 | 1179.821754 | 1.0 | Steady | None | 0.07 | 0.0 | 1.598670 | 20201001_003000 | NaN | THURSDAY | 204.578 | 7.63 | 01 ORIGINAL STATE | 24.1 | 245295 | NaN | 45.1 | 72.1 | 24.1 | 1.57 | 5652 | 1399 | 7.57 | 0 | 1017 | 7.63 | NaN | 339 | 1028 | 819 | 803 | 832 | 34.0 | 16.4 | 346 | 158.0 | 791 | 398.0 | 6803.0 | 56.7 | COND E | 62.3 | NaN | 34 | 0.07 | 84.9 | 130.563014 | 0.0 | 1.0 | 1.0 | ON | 02 | HIGH | 0.000824 | 0.000824 | 1212.857143 | 0.017227 | 100 | NaN | 00 | NULL | None | NaN | 202040 | NaN | 1053.079665 | 0.116847 | |
| 4 | 1203.401778 | 1.0 | Steady | None | 0.06 | 0.0 | 1.593819 | 20201001_004000 | NaN | THURSDAY | 205.520 | 9.20 | 01 ORIGINAL STATE | 24.4 | 245296 | NaN | 45.3 | 72.2 | 24.4 | 1.56 | 5616 | 1401 | 6.87 | 0 | 1017 | 9.20 | NaN | 341 | 1022 | 821 | 813 | 836 | 33.9 | 16.4 | 345 | 157.0 | 779 | 400.0 | 6788.0 | 56.8 | COND E | 39.4 | NaN | 35 | 0.06 | 75.9 | 129.926027 | 0.0 | 1.0 | 1.0 | ON | 02 | HIGH | 0.000791 | 0.000791 | 1265.000000 | 0.017416 | 100 | NaN | 00 | NULL | None | NaN | 202040 | NaN | 978.012766 | 0.118133 |