Package: featurizer-api-client
Featurizer API clientThis package provides aPyPi-installablelightweight client application for theFeaturizer APIRESTFull server application. The package implementsFeaturizerApiClientclass enabling fast and easy method-based calls to all endpoints accessible on the API. To make working with the client a piece of cake, it provides full-documented example scripts for each of the supported endpoints. For more information about the Featurizer API, please read the officialreadmeanddocumentation.The full programming sphinx-generated docs can be seen in theofficial documentation.Endpoints:featurization endpoints (/featurize)/featurize- calls.extracton the specified features-extractor (featurizer interface)security endpoints (/signup,/login, and/refresh)/signup- signs-up a new user./login- logs-in an existing user (obtains access and refresh authorization tokens)./refresh- refreshes an expired access token (obtains refreshed authorization access token).Contents:InstallationConfigurationDataExamplesLicenseContributorsInstallationpip install featurizer-api-clientConfigurationThe package provides the following configuration of theFeaturizerApiClientobject during the instantiation:API deployment specific configuration: it supports the configuration of thehost(IP address),port(port number), and other settings related to the deployment and operation of the Featurizer API (for more information, see thedocs/).API client specific configuration: it supports the configuration of the logging (logging_configuration). In this version, the package provides logging of the successful as well as unsuccessful/featurizeendpoint calls (for more information, see thedocs/).DataThe full description of the requirements on input/output data (format, shape, etc.) can be foundhere.ExamplesIn general, every time a client is used, theFeaturizerApiClientclass must be instantiated. Next, all endpoint-specific data must be prepared. And finally, the endpoint-specific methods can be called. The full example scripts for each of the supported endpoints are placed at./examples(simplified examples are shown bellow).Client instantiationfrompprintimportpprintfromhttpimportHTTPStatusfromfeaturizer_api_clientimportFeaturizerApiClient# Prepare the featurizer API client settings## ---------------------------------------------- ## Must be same as for the running Featurizer API ## ---------------------------------------------- ### 1. host (IP address)# 2. port (port number)# 3. request verification# 4. request timeout in secondshost="http://127.0.0.1"port=5000verify=Truetimeout=2# Instantiate the featurizer API clientclient=FeaturizerApiClient(host=host,port=port,verify=verify,timeout=timeout)User sign-up# This example assumes the presence of the client instantiation code# TODO: prepare data for a new user (see the API's requirements on the password)## 1. username# 2. password (e.g. can be generated with https://passwordsgenerator.net/)username="<TODO: FILL-IN>"password="<TODO: FILL-IN>"print("\n-- [01] example --")print(f"Signing-up a new user with username:{username}and password:{password}\n")# Sign-up a new userresponse,status_code=client.sign_up(username,password)# Check the outputifstatus_code==HTTPStatus.OK:print("Successfully signed-up a new user")else:print(f"The request was unsuccessful ({status_code}):{response}")print("Response:")pprint(response)User log-in# This example assumes the presence of the client instantiation code# TODO: prepare data for an existing user (data from: user sign-up)## 1. username# 2. passwordusername="<TODO: FILL-IN>"password="<TODO: FILL-IN>"print("\n-- [02] example --")print(f"Logging-in an existing user with username:{username}and password:{password}\n")# Log-in an existing userresponse,status_code=client.log_in(username,password)# Check the outputifstatus_code==HTTPStatus.OK:print("Successfully logged-in an existing user")else:print(f"The request was unsuccessful ({status_code}):{response}")print("Response:")pprint(response)Expired access token refresh# This example assumes the presence of the client instantiation code# TODO: prepare data for request authorization (refresh token from: user log-in)refresh_token="<TODO: FILL-IN>"print("\n-- [03] example --")print("Refreshing an expired access token\n")# Refresh an expired access tokenresponse,status_code=client.refresh_access_token(refresh_token)# Check the outputifstatus_code==HTTPStatus.OK:print("Successfully refreshed an expired access token")else:print(f"The request was unsuccessful ({status_code}):{response}")print("Response:")pprint(response)Featurization# This example assumes the presence of the client instantiation codeimportnumpy# TODO: prepare data for request authorization (access token and refresh token)access_token="<TODO: FILL-IN>"refresh_token=">TODO: FILL-IN>"# TODO: prepare pipeline of features## Example:# features_pipeline = [#     {#         "name": "feature 1",#         "args": {"abc": 123, "def": 456}#     },#     {#         "name": "feature 2",#         "args": {"ghi": "simple", "jkl": False}#     },#     {#         "name": "feature 3",#         "args": {}#     }# ]features_pipeline="<TODO: FILL-IN>"# TODO: prepare feature extractor configurationextractor_configuration="<TODO: FILL-IN>"# TODO: prepare featurizer data (sample values/labels)## ----------------------------------------------------- ## Must meet the data requirements of the Featurizer API ## ----------------------------------------------------- ### Example (10 subjects, each having 100 1-D samples):# sample_values = numpy.random.rand(10, 1, 100)# sample_labels = Nonesample_values="<TODO: FILL-IN>"sample_labels=Noneprint("\n-- [04] example --")print(f"Calling .featurize(...) on a feature extractor\n")# Call .featurize(...) on a feature extractorresponse,status_code=client.featurize(features_pipeline=features_pipeline,sample_values=sample_values,sample_labels=sample_labels,extractor_configuration=extractor_configuration,access_token=access_token,refresh_token=refresh_token)# Check the outputifstatus_code==HTTPStatus.OK:print("Successfully called .featurize(...)")else:print(f"The request was unsuccessful ({status_code}):{response}")print("Response:")pprint(response)LicenseThis project is licensed under the MIT License - see theLICENSEfile for details.ContributorsThis package is developed by the members ofBrain Diseases Analysis Laboratory. For more information, please contact the head of the laboratory Jiri Mekyskamekyska@vut.czor the main developer: Zoltan Galazgalaz@vut.cz.