Package: obplatform
OBPlatformA package to interact and download behavior data fromASHRAE Global Occupant Behavior Database. Currently available on PyPI and conda-forge. More features coming in the furture.FeaturesList all behavior types available in the database.Download data archive (ZIP file) based on behavior type and study id inputs (with progress bar).Query studies based on (behaviors, countries, cities, (building type + room type))Query available behavior types based on study idsInstallationpoetrypoetry installpippip install --upgrade obplatformcondaconda install -c conda-forge obplatformFor Python 3.10: If you see an error like the following when resolving dependencies, it's caused bya bugin conda with Python 3.10.Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  - python=3.1Three possible solutions:Create a new conda environment with Python <3.10.Upgrade conda to a new version. (conda released 4.11.0 on 11/22/2021 at GitHub, which fixed the bug for Python 3.10. However, it will still take some time before conda 4.11.0 is available on Anaconda Cloud).Usemamba, which is a reimplementation of the conda package manager in C++. It is much faster and contains less bugs.mambaOnce you activate the environment through conda or micromamba:mamba install -c conda-forge obplatformExampleimportloggingimportzipfileimportpandasaspdfromobplatformimportConnector,loggerconnector=Connector()# List all behaviors available in the databaseprint(connector.list_behaviors())# Print progress information# Comment out the following line to hide progress informationlogger.setLevel(logging.INFO)# Download Appliance Usage + Occupant Presence behaviors from study 22, 11, and 2.connector.download_export("data.zip",["Appliance_Usage","Occupancy_Measurement"],["22","11","2"],show_progress_bar=True,# False to disable progrees bar)behavior_type="Appliance_Usage"study_id="22"zf=zipfile.ZipFile("data.zip")df=pd.read_csv(zf.open(f"{behavior_type}_Study{study_id}.csv"))print(df.head())# List all behaviors available in study 1, 2, 3, and 4json_study_behaviors=connector.list_behaviors_in_studies(studies=["1","2","3","4"])print(json_study_behaviors)# List all studies available in the database, filtered by behavior types,# countries, cities, {building type, room_type} combinations.json_studies=connector.list_studies(behaviors=["Occupancy_Measurement","Appliance_Usage"],countries=["USA","UK"],cities=["Palo Alto","Coventry","San Antonio"],buildings=[{"building_type":"Educational","room_type":"Classroom",},{"building_type":"Educational","room_type":"Office",},{"building_type":"Residential","room_type":"Single-Family House",},],)print(json_studies)UsageAvailable behavior typesPlease only use the following names as input. e.g. Please useLighting_Status(listed below) instead ofLighting Adjustment(displayed on the website).'Appliance_Usage', 'Fan_Status', 'Door_Status', 'HVAC_Measurement', 'Lighting_Status', 'Occupant_Number', 'Occupancy_Measurement', 'Other_HeatWave', 'Other_Role of habits in consumption', 'Other_IAQ in Affordable Housing', 'Shading_Status', 'Window_Status'In the next version, the package will auto detect either type of input and convert to the correct query parameter.Note: big dataStudy 2 is a special case. It has very large source files (> 2 GB) so we compressed all data in study 2 as a single.tar.gzfile. In the example above,data.zipcontains atar.gzfile along with several separate csv files from other studies. When writing libraries to read from csv file from the downloaded zip, Study 2 should be treated as a special case.Changelog2021-11-18:  Release 0.1.32021-11-19:  Release 0.1.4, fixed a minor issue with Python 3.10.02021-11-23:  Release 1.0.0Breaking changes:Behavior type (query field) "Occupancy" has been renamed to "Occupancy_Measurement" to keep the name consistent. The example above has been changed accordingly. The server will reject query field "Occupancy".Added endpoint to check backend server healthAdded endpoint to query available behavior types based on Study IDs2021-12-01: Release 1.1.0Added endpoint to query available studies based on (behaviors, countries, cities, (building type + room type))API Referencehttps://obplatform.readthedocs.io/en/latest/index.html