# Python Package for Sensor Fabric
Welcome to the python package for SensorFabric.
## What is SensorFabric?
SensorFabric is an initiative by University of Arizona's Center of Bioinformatics and Biostatistics (CB2)
to create homogenous layer for accessing, storing and processing sensor data.
## How to install it?
You can install the sensorfabric python library using `pip` as follows
```
pip install sensorfabric
```
## Getting Started
SensorFabric has several different modules. We try to give a basic overview here.
### Athena Module
The Athena module abstracts query execution and caching, by returning results from AWS Athena
as Pandas dataframes. </br>
**To run this locally you must have aws credentials configured using `aws configure`**
Example
```
from sensorfabric.athena import athena
import pandas as pd
# Create an object.
db = athena(database='MyExampleDatabase')
# Execute a query by performing a blocking operation.
frame = db.execQuery('SELECT "participantId" FROM "fitbit_hr" LIMIT 5')
# Print out the pandas frame.
print(frame.head())
# Queries can also be run async (callbacks are currently not supported)
executionId = db.startQueryExec('SELECT "participantId" FROM "fitbit_hr" LIMIT 5')
# Returns immidately, with the query execution ID.
# Do some important work here
frame = db.queryResults(executionId)
# Returns the query result as a dataframe
print(frame.head())
```
**Enabling offline caching**
In order to enable offline caching for queries pass `offlineCache=True` to `Athena()`.
When caching is enabled a `.cache` folder is creating in the calling directory, and query
results are stored in it. Files are named using the md5 hash of the query string.
Pass `cached=True` to `execQuery()` in order to use cached results. The following important
points need to be noted when using caching -
* Only exact query strings will cache to the same files.
* Both `offlineCache` and `cached` must be set true for this to work.
* There is currently no time limit on the cached results (This might change).
* If you want to reset the cache you can delete the `.cache directory`.
Example
```
db = athena(database='MyBigDatabase', offlineCache=True)
# The first query will hit Athena but cache the local results in the .cache directory.
frame = db.execQuery('SELECT DISTINCT(pid) FROM temperature', cached=True)
print(frame.head())
# The second exact query will return results from the local cache.
frame = db.execQuery('SELECT DISTINCT(pid) FROM temperature', cached=True)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/UArizonaCB2/sensorfabric-py.git",
"name": "sensorfabric",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3",
"maintainer_email": null,
"keywords": "sensors sensorfabric",
"author": "Shravan Aras",
"author_email": "shravanaras@arizona.edu",
"download_url": "https://files.pythonhosted.org/packages/c1/38/83b5bc4e92d74e05fcd305fd45deb05b5a27535efc056d4afcedb05384d5/sensorfabric-3.1.1.tar.gz",
"platform": null,
"description": "# Python Package for Sensor Fabric\n\nWelcome to the python package for SensorFabric. \n\n## What is SensorFabric?\n\nSensorFabric is an initiative by University of Arizona's Center of Bioinformatics and Biostatistics (CB2)\nto create homogenous layer for accessing, storing and processing sensor data.\n\n## How to install it?\n\nYou can install the sensorfabric python library using `pip` as follows\n```\npip install sensorfabric\n```\n\n## Getting Started\n\nSensorFabric has several different modules. We try to give a basic overview here.\n\n### Athena Module\nThe Athena module abstracts query execution and caching, by returning results from AWS Athena\nas Pandas dataframes. </br>\n**To run this locally you must have aws credentials configured using `aws configure`**\n\nExample\n```\nfrom sensorfabric.athena import athena\nimport pandas as pd\n\n# Create an object.\ndb = athena(database='MyExampleDatabase')\n\n# Execute a query by performing a blocking operation.\nframe = db.execQuery('SELECT \"participantId\" FROM \"fitbit_hr\" LIMIT 5')\n# Print out the pandas frame.\nprint(frame.head())\n\n# Queries can also be run async (callbacks are currently not supported)\nexecutionId = db.startQueryExec('SELECT \"participantId\" FROM \"fitbit_hr\" LIMIT 5')\n# Returns immidately, with the query execution ID. \n\n# Do some important work here\n\nframe = db.queryResults(executionId)\n# Returns the query result as a dataframe\nprint(frame.head()) \n```\n\n**Enabling offline caching**\nIn order to enable offline caching for queries pass `offlineCache=True` to `Athena()`.\nWhen caching is enabled a `.cache` folder is creating in the calling directory, and query\nresults are stored in it. Files are named using the md5 hash of the query string. \nPass `cached=True` to `execQuery()` in order to use cached results. The following important\npoints need to be noted when using caching -\n* Only exact query strings will cache to the same files.\n* Both `offlineCache` and `cached` must be set true for this to work.\n* There is currently no time limit on the cached results (This might change). \n* If you want to reset the cache you can delete the `.cache directory`.\n\nExample\n```\ndb = athena(database='MyBigDatabase', offlineCache=True)\n\n# The first query will hit Athena but cache the local results in the .cache directory.\nframe = db.execQuery('SELECT DISTINCT(pid) FROM temperature', cached=True)\nprint(frame.head())\n# The second exact query will return results from the local cache.\nframe = db.execQuery('SELECT DISTINCT(pid) FROM temperature', cached=True)\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python library for UA Sensor Fabric",
"version": "3.1.1",
"project_urls": {
"Homepage": "https://github.com/UArizonaCB2/sensorfabric-py.git"
},
"split_keywords": [
"sensors",
"sensorfabric"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c13883b5bc4e92d74e05fcd305fd45deb05b5a27535efc056d4afcedb05384d5",
"md5": "5eb613502400e61b0d4f6eb17b9733c6",
"sha256": "0f3a391a6b38124e8d73f437e70129ece456a503cf223a6fac61e0b02eb767b7"
},
"downloads": -1,
"filename": "sensorfabric-3.1.1.tar.gz",
"has_sig": false,
"md5_digest": "5eb613502400e61b0d4f6eb17b9733c6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3",
"size": 16909,
"upload_time": "2024-08-29T17:12:19",
"upload_time_iso_8601": "2024-08-29T17:12:19.290776Z",
"url": "https://files.pythonhosted.org/packages/c1/38/83b5bc4e92d74e05fcd305fd45deb05b5a27535efc056d4afcedb05384d5/sensorfabric-3.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-29 17:12:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "UArizonaCB2",
"github_project": "sensorfabric-py",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "sensorfabric"
}