diff --git a/.github/workflows/github-ubuntu.yaml b/.github/workflows/github-ubuntu.yaml index 3f750ec..fe19215 100644 --- a/.github/workflows/github-ubuntu.yaml +++ b/.github/workflows/github-ubuntu.yaml @@ -47,18 +47,19 @@ jobs: run: | python -m build . python -m pip install . - - name: fail the build in case of any misspelled words - run: | - cd docs - #delete the previous spelling output if this file exists - if [ -s "./_build/spelling/output.txt" ]; then - rm ./_build/spelling/output.txt; fi - make spelling - if [ -s "./_build/spelling/output.txt"] ; then - echo ++++++++++++++++++++ Misspelled words ++++++++++++++++++++ - cat "./_build/spelling/output.txt"; fi - cd .. - # if [-s "./_build/spelling/output.txt"]; then false; fi + # the dependencies required for sphinxcontrib.spelling + # do not seem to be maintained anymore + # - name: fail the build in case of any misspelled words + # run: | + # cd docs + # #delete the previous spelling output if this file exists + # if [ -s "./_build/spelling/output.txt" ]; then + # rm ./_build/spelling/output.txt; fi + # make spelling + # if [ -s "./_build/spelling/output.txt"] ; then + # echo ++++++++++++++++++++ Misspelled words ++++++++++++++++++++ + # cat "./_build/spelling/output.txt"; fi + # cd .. - name: build apidocs run: | cd docs diff --git a/__init__.py b/__init__.py index 037da30..6bcafaf 100644 --- a/__init__.py +++ b/__init__.py @@ -12,11 +12,11 @@ There are two things that you must do before using this package. 1) If you have not done so yet register your username with Data Mart, - (reffer to the aqs_sign_up function, this only need to be done once). + (refer to the aqs_sign_up function, this only need to be done once). 2) Every time this library is reloaded aqs_credentials function must be called before continuing. -reffer to the `package documentation` +refer to the `package documentation` for more details about this package. EPA Disclaimer diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle new file mode 100644 index 0000000..fb1498d Binary files /dev/null and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/genindex.doctree b/docs/_build/doctrees/genindex.doctree index a7d8b78..52ef5e0 100644 Binary files a/docs/_build/doctrees/genindex.doctree and b/docs/_build/doctrees/genindex.doctree differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree new file mode 100644 index 0000000..615de2c Binary files /dev/null and b/docs/_build/doctrees/index.doctree differ diff --git a/docs/_build/doctrees/manual/EPA_Disclaimer.doctree b/docs/_build/doctrees/manual/EPA_Disclaimer.doctree new file mode 100644 index 0000000..3125c45 Binary files /dev/null and b/docs/_build/doctrees/manual/EPA_Disclaimer.doctree differ diff --git a/docs/_build/doctrees/manual/Install_pyaqsapi.doctree b/docs/_build/doctrees/manual/Install_pyaqsapi.doctree new file mode 100644 index 0000000..a21f988 Binary files /dev/null and b/docs/_build/doctrees/manual/Install_pyaqsapi.doctree differ diff --git a/docs/_build/doctrees/manual/Introduction.doctree b/docs/_build/doctrees/manual/Introduction.doctree new file mode 100644 index 0000000..3ecd2c7 Binary files /dev/null and b/docs/_build/doctrees/manual/Introduction.doctree differ diff --git a/docs/_build/doctrees/manual/Load_pyaqsapi.doctree b/docs/_build/doctrees/manual/Load_pyaqsapi.doctree new file mode 100644 index 0000000..081aef7 Binary files /dev/null and b/docs/_build/doctrees/manual/Load_pyaqsapi.doctree differ diff --git a/docs/_build/doctrees/manual/RAQSAPI.doctree b/docs/_build/doctrees/manual/RAQSAPI.doctree new file mode 100644 index 0000000..1dbea48 Binary files /dev/null and b/docs/_build/doctrees/manual/RAQSAPI.doctree differ diff --git a/docs/_build/doctrees/manual/TimelinessofAQSdata.doctree b/docs/_build/doctrees/manual/TimelinessofAQSdata.doctree new file mode 100644 index 0000000..6d7403f Binary files /dev/null and b/docs/_build/doctrees/manual/TimelinessofAQSdata.doctree differ diff --git a/docs/_build/doctrees/manual/Troubleshooting.doctree b/docs/_build/doctrees/manual/Troubleshooting.doctree new file mode 100644 index 0000000..924dd9b Binary files /dev/null and b/docs/_build/doctrees/manual/Troubleshooting.doctree differ diff --git a/docs/_build/doctrees/manual/Using_pyaqsapi.doctree b/docs/_build/doctrees/manual/Using_pyaqsapi.doctree new file mode 100644 index 0000000..6c0dfaf Binary files /dev/null and b/docs/_build/doctrees/manual/Using_pyaqsapi.doctree differ diff --git a/docs/_build/doctrees/manual/pyaqsapiFunctions-Brief.doctree b/docs/_build/doctrees/manual/pyaqsapiFunctions-Brief.doctree new file mode 100644 index 0000000..d3bba69 Binary files /dev/null and b/docs/_build/doctrees/manual/pyaqsapiFunctions-Brief.doctree differ diff --git a/docs/_build/doctrees/manual/pyaqsapiFunctions-Long.doctree b/docs/_build/doctrees/manual/pyaqsapiFunctions-Long.doctree new file mode 100644 index 0000000..5f720fb Binary files /dev/null and b/docs/_build/doctrees/manual/pyaqsapiFunctions-Long.doctree differ diff --git a/docs/_build/doctrees/manual/pyaqsapiusagetipsandprecautions.doctree b/docs/_build/doctrees/manual/pyaqsapiusagetipsandprecautions.doctree new file mode 100644 index 0000000..c44f2c5 Binary files /dev/null and b/docs/_build/doctrees/manual/pyaqsapiusagetipsandprecautions.doctree differ diff --git a/docs/_build/doctrees/modules.doctree b/docs/_build/doctrees/modules.doctree new file mode 100644 index 0000000..54feed4 Binary files /dev/null and b/docs/_build/doctrees/modules.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.bybox.doctree b/docs/_build/doctrees/pyaqsapi.bybox.doctree new file mode 100644 index 0000000..3461f55 Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.bybox.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.bycbsa.doctree b/docs/_build/doctrees/pyaqsapi.bycbsa.doctree new file mode 100644 index 0000000..1e14128 Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.bycbsa.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.bycounty.doctree b/docs/_build/doctrees/pyaqsapi.bycounty.doctree new file mode 100644 index 0000000..27032ef Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.bycounty.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.byma.doctree b/docs/_build/doctrees/pyaqsapi.byma.doctree new file mode 100644 index 0000000..01dfb25 Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.byma.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.bypqao.doctree b/docs/_build/doctrees/pyaqsapi.bypqao.doctree new file mode 100644 index 0000000..fe2d0ba Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.bypqao.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.bysite.doctree b/docs/_build/doctrees/pyaqsapi.bysite.doctree new file mode 100644 index 0000000..7b00de5 Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.bysite.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.bystate.doctree b/docs/_build/doctrees/pyaqsapi.bystate.doctree new file mode 100644 index 0000000..7b899f1 Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.bystate.doctree differ diff --git a/docs/_build/doctrees/pyaqsapi.doctree b/docs/_build/doctrees/pyaqsapi.doctree new file mode 100644 index 0000000..147f418 Binary files /dev/null and b/docs/_build/doctrees/pyaqsapi.doctree differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo new file mode 100644 index 0000000..0ffd185 --- /dev/null +++ b/docs/_build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: e3491443219617bc884bb5b0d079c57c +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_sources/genindex.rst.txt b/docs/_build/html/_sources/genindex.rst.txt new file mode 100644 index 0000000..66a2352 --- /dev/null +++ b/docs/_build/html/_sources/genindex.rst.txt @@ -0,0 +1,2 @@ +Index +===== \ No newline at end of file diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..7c9df75 --- /dev/null +++ b/docs/_build/html/_sources/index.rst.txt @@ -0,0 +1,39 @@ +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +=========================== +pyaqsapi user documentation +=========================== + +.. toctree:: + :maxdepth: 2 + :numbered: + :hidden: + +.. include:: manual/EPA_Disclaimer.rst +.. include:: manual/Introduction.rst +.. include:: manual/TimelinessofAQSdata.rst +.. include:: manual/Install_pyaqsapi.rst +.. include:: manual/Load_pyaqsapi.rst +.. include:: manual/Using_pyaqsapi.rst +.. include:: manual/pyaqsapiusagetipsandprecautions.rst +.. include:: manual/pyaqsapiFunctions-Long.rst +.. include:: manual/Troubleshooting.rst +.. include:: manual/RAQSAPI.rst + + +pyaqsapi API reference documentation +------------------------------------ + +* :ref:`modindex` + +pyaqsapi index +-------------- + +* :ref:`genindex` + +References +---------- +.. bibliography:: + :style: plain + :list: enumerated + :filter: docname in docnames \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/EPA_Disclaimer.rst.txt b/docs/_build/html/_sources/manual/EPA_Disclaimer.rst.txt new file mode 100644 index 0000000..21551d3 --- /dev/null +++ b/docs/_build/html/_sources/manual/EPA_Disclaimer.rst.txt @@ -0,0 +1,35 @@ +:orphan: + +.. index:: EPA Disclaimer + +EPA Disclaimer +============== + +.. note:: + This software/application was developed by the U.S. Environmental + Protection Agency (USEPA). No warranty expressed or implied is made + regarding the accuracy or utility of the system, nor shall the act of + distribution constitute any such warranty. The USEPA has relinquished + control of the information and no longer has responsibility to protect + the integrity, confidentiality or availability of the information. Any + reference to specific commercial products, processes, or services by + service mark, trademark, manufacturer, or otherwise, does not constitute + or imply their endorsement, recommendation or favoring by the USEPA. The + USEPA seal and logo shall not be used in any manner to imply endorsement + of any commercial product or activity by the USEPA or the United States + Government. + +AQS DataMart Disclaimer +======================= + +.. warning:: + US EPA’s AQS Data Mart API V2 is currently in beta phase of development, + the API interface has not been finalized. This means that certain + functionality of the API may change or be removed without notice. As a + result, this package is also currently marked as beta and may also change + to reflect any changes made to the Data Mart API or in respect to + improvements in the design, functionality, quality and documentation of + this package. The authors assume no liability for any problems that may + occur as a result of using this package, the Data Mart service, any + software, service, hardware, or user accounts that may utilize this + package. \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/Install_pyaqsapi.rst.txt b/docs/_build/html/_sources/manual/Install_pyaqsapi.rst.txt new file mode 100644 index 0000000..59fddd7 --- /dev/null +++ b/docs/_build/html/_sources/manual/Install_pyaqsapi.rst.txt @@ -0,0 +1,28 @@ +:orphan: + +.. index:: Install pyaqsapi +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Install pyaqsapi +================ +To install pyaqsapi first clone the pyaqsapi repository. + +.. code-block:: console + + git clone https://github.com/USEPA/pyaqsapi.git + +Next, in the project's root directory use pip to install the proper +dependencies that are required to build +and install pyaqsapi. + +.. code-block:: console + + pip install -r requirements.txt + +While still in the project's root directory use setuptools to build and pip +to install the package. + +.. code-block:: console + + python -m build . + python -m pip install . \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/Introduction.rst.txt b/docs/_build/html/_sources/manual/Introduction.rst.txt new file mode 100644 index 0000000..46ab71d --- /dev/null +++ b/docs/_build/html/_sources/manual/Introduction.rst.txt @@ -0,0 +1,26 @@ +:orphan: + +.. index:: Introduction +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Introduction +============ +The pyaqsapi package for the python 3 programming environment allows a python 3 +programming environment to connect to and retrieve data from the United States +Environmental Protection Agency’s (US EPA) Air Quality System (AQS) Data Mart +API v2 (Air Quality System) :cite:t:`AQSDataMartWelcome` interface directly. +This package enables the data user to omit legacy challenges including coercing +data from a JSON object to a usable python 3 object, retrieving multiple years +of data, formatting API requests, retrieving results, handling credentials, +requesting multiple pollutant data and rate limiting data requests. +All the basic functionality of the API have been implemented that are available +from the AQS API Data Mart server. The library connects to AQS Data Mart API +via Hypertext Transfer Protocol (HTTP) so there is no need to install external +ODBC drivers, configure ODBC connections or deal with the security +vulnerabilities associated with them. Most functions have a parameter, +return_header which by default is set to FALSE. If the user decides to +set return_header to TRUE, then that function will return a python 3 +AQSAPI_V2 object. An AQSAPI_V2 object has instance methods for retrieving the +data requested, header information, and other metadata related to the API call. +After each call to the API a five second stall is invoked to help prevent +overloading the Data Mart API server and to serve as a simple rate limit. diff --git a/docs/_build/html/_sources/manual/Load_pyaqsapi.rst.txt b/docs/_build/html/_sources/manual/Load_pyaqsapi.rst.txt new file mode 100644 index 0000000..b6d807b --- /dev/null +++ b/docs/_build/html/_sources/manual/Load_pyaqsapi.rst.txt @@ -0,0 +1,14 @@ +:orphan: + +.. index:: Load pyaqsapi +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Load pyaqsapi +============= +Like any other python package make sure that you are loading pyaqsapi in the +same virtual environment where pyaqsapi was installed. Load pyaqsapi in the +same any other python package is loaded. + +.. code-block:: python3 + + import pyaqsapi as aqs \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/RAQSAPI.rst.txt b/docs/_build/html/_sources/manual/RAQSAPI.rst.txt new file mode 100644 index 0000000..f844936 --- /dev/null +++ b/docs/_build/html/_sources/manual/RAQSAPI.rst.txt @@ -0,0 +1,14 @@ +:orphan: + +.. index:: About RAQSAPI +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +About RAQSAPI +============= +pyaqsapi is a port of :cite:t:`Rpackage:RAQSAPI` to the +python 3 programming environment. For anyone that is familiar with RAQSAPI, +the pyaqsapi API will feel familiar to you, most of the functions are similar +and the parameters sent to each functions are the same. pyaqsapi aims to have +feature parity with RAQSAPI and neither project will have features that the +other project does not - other than programming language environment or +language preference there is no benefit to using one package over the other. \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/TimelinessofAQSdata.rst.txt b/docs/_build/html/_sources/manual/TimelinessofAQSdata.rst.txt new file mode 100644 index 0000000..af1e244 --- /dev/null +++ b/docs/_build/html/_sources/manual/TimelinessofAQSdata.rst.txt @@ -0,0 +1,12 @@ +:orphan: + +.. index:: About the timeliness of AQS Data + +About the timeliness of AQS Data +================================ + +EPA's AQS Datamart API, the service that pyaqsapi retrieves data from, does not +host real time (collected now/today) data. If real time data is needed, please +use the AirNow API and direct all questions toward real time data there. +pyaqsapi does not work with AirNow and cannot retrieve real time data. For more +details see section 7.1 of the About AQS Data page :cite:t:`AboutAQSdata`. \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/Troubleshooting.rst.txt b/docs/_build/html/_sources/manual/Troubleshooting.rst.txt new file mode 100644 index 0000000..a3d137e --- /dev/null +++ b/docs/_build/html/_sources/manual/Troubleshooting.rst.txt @@ -0,0 +1,12 @@ +:orphan: + +.. index:: Troubleshooting pyaqsapi +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Troubleshooting +=============== + +Parameters must be supplied exactly as they are specified, for example the +stateFIPS for Alabama is "01", entering a value of "1" for the stateFIPS +may lead to unexpected results. Do not omit leading zeros in parameters that +expect them. \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/Using_pyaqsapi.rst.txt b/docs/_build/html/_sources/manual/Using_pyaqsapi.rst.txt new file mode 100644 index 0000000..4e4fc59 --- /dev/null +++ b/docs/_build/html/_sources/manual/Using_pyaqsapi.rst.txt @@ -0,0 +1,58 @@ +:orphan: + +.. index:: Using pyaqsapi +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Using pyaqsapi +============== +For those who are already familiar with using :cite:t:`Rpackage:RAQSAPI` +RAQSAPI then the pyaqsapi API should feel familiar with a few minor differences +regarding how the data is returned. + +By default data is returned as a pandas Data Frames :cite:t:`pandas_DataFrame`. +Exported functions from pyaqsapi have a parameter RETURN_HEADER, by default +this parameter is False. When False functions simply return the requested +data as a pandas Data Frame. If RETURN_HEADER is manually set to True a list of +AQSAPI_V2 python 3 objects are returned. Use the get_data() class method to +retrieve the data and the get_header() class method to retrieve header +information. + +.. index:: sign_up + +Sign up and setting up user credentials with the pyaqsapi library +================================================================= +If you have not already done so you will need to sign up with AQS Data Mart +using aqs_sign_up function, this function takes one input, “email,” which +is a python 3 character object, that represents the email address that you want +to use as a user credential to the AQS Data Mart service. After a successful +call to aqs_sign_up an email message will be sent to the email address provided +with a new Data Mart key which will be used as a credential key to access the +Data Mart API. The aqs_sign_up function can also be used to regenerate a new +key for an existing user, to generate a new key simply call the aqs_sign_up +function with the parameter “email” set to an existing account. A new key will +be e-mailed to the account given. + +The credentials used to access the Data Mart API service are stored in as a +python global variable that needs to be set every time the pyaqsapi module is +loaded or the key is changed. Without valid credentials, the Data Mart server +will reject any request sent to it. The key used with Data Mart is a key and is +not a password, so the pyaqsapi package does not treat the key as a password; +this means that the key is stored in plain text and there are no attempts to +encrypt Data Mart credentials as would be done for a username and password +combination. The key that is supplied to use with Data Mart is not intended for +authentication but only account monitoring. Each time pyaqsapi is loaded and +before using any of it’s functions use the aqs_credentials function to enter in +the user credentials so that pyaqsapi can access the AQS Data Mart server. + +Both pyaqsapi and RAQSAPI use the US Environmental Protection Agency's Air +Quality Service DataMart to retrieve data. The same credentials can be used for +access to either project. Note however, that AQS and AQS DataMart are similar +and related data sources, however the credentials used to access AQS are not the +same as those used to access AQS DataMart. + +.. note:: + The credentials used to access AQS Data Mart API are not the same as the + credentials used to access AQS. AQS users who do not have access to the + AQS Data Mart will need to create new credentials. However, you may use the + same credentials used in RAQSAPI in pyaqsapi since RAQSAPI ewes the the same + AQS Data Mart API as pyaqsapi. diff --git a/docs/_build/html/_sources/manual/pyaqsapiFunctions-Brief.rst.txt b/docs/_build/html/_sources/manual/pyaqsapiFunctions-Brief.rst.txt new file mode 100644 index 0000000..7f87dc8 --- /dev/null +++ b/docs/_build/html/_sources/manual/pyaqsapiFunctions-Brief.rst.txt @@ -0,0 +1,62 @@ +:orphan: + +.. index:: pyaqsapi Functions Brief +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Data Mart aggregate functions +============================= +.. note:: + AQS Data Mart API restricts the maximum amount of monitoring data to one + full year of data per API call. These functions are able to return multiple + years of data by making repeated calls to the API. Each call to the Data + Mart API will take time to complete. The more years of data being requested + the longer pyaqsapi will take to return the results. + +These functions retrieve aggregated data from the Data Mart API and are grouped +by how each function aggregates the data. There are 7 different families of +related aggregate functions in which the AQS Data Mart API groups data. + +.. index:: aggregate functions + +These seven families are: + + - by site (aqs.bysite) + - by county (aqs.bycounty) + - by state (aqs.bystate) + - by latitude/longitude bounding box (aqs.bybox) + - by monitoring agency (aqs.byma) + - by Primary Quality Assurance Organization (aqs.bypqao) + - by core based statistical area (as defined by the US census Bureau) + (aqs.bycbsa). + +Within these families of aggregated data functions there are functions that +call on the 13 different aggregate services that the Data Mart API provides. +Note that not all aggregations are available for each service. + +.. index:: services + +These thirteen services are: + + * Monitors (monitors) + * Sample Data (sampledata) + * Daily Summary Data (dailydata) + * Annual Summary Data (annualdata) + * Quality Assurance - Blanks Data (qa_blanks) + * Quality Assurance - Collocated Assessments + (qa_collocated_assessments) + * Quality Assurance - Flow Rate Verifications (qa_flowrateverification) + * Quality Assurance - Flow Rate Audits (aqs_qa_flowrateaudit) + * Quality Assurance - One Point Quality Control Raw Data + (qa_one_point_qc) + * Quality Assurance - PEP Audits (qa_pep_audit) + * Transaction Sample - AQS Submission data in transaction Format (RD) + (transactionsample) + * Quality Assurance - Annual Performance Evaluations + (qa_annualperformanceeval) + * Quality Assurance - Annual Performance Evaluations in the AQS + Submission transaction format (RD) (qa_annualperformanceevaltransaction) + + +Aggregate functions are named aqs..() where +is one of the 13 services listed above and is either +"bysite“, ”bycounty“, ”bystate“, ”bybox“, ”bycbsa", "byma" or "bypqao". \ No newline at end of file diff --git a/docs/_build/html/_sources/manual/pyaqsapiFunctions-Long.rst.txt b/docs/_build/html/_sources/manual/pyaqsapiFunctions-Long.rst.txt new file mode 100644 index 0000000..092d918 --- /dev/null +++ b/docs/_build/html/_sources/manual/pyaqsapiFunctions-Long.rst.txt @@ -0,0 +1,825 @@ +:orphan: + +.. index:: pyaqsapi Functions Long +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Functions Exported by pyaqsapi +==================================================== +The pyaqsapi package includes the following submodules which are not +loaded by default: +:: + +* pyaqsapi.bysite +* pyaqsapi.bycounty +* pyaqsapi.bycounty +* pyaqsapi.bycbsa +* pyaqsapi.bybox +* pyaqsapi.byma +* pyaqsapi.ma + +With these submodules loaded the entire list of functions exported by the +pyaqsapi package includes: + +:: + +* pyaqsapi.aqs_cbsas, +* pyaqsapi.aqs_classes, +* pyaqsapi.aqs_counties_by_state, +* pyaqsapi.aqs_credentials, +* pyaqsapi.aqs_credentials, +* pyaqsapi.aqs_fields_by_service, +* pyaqsapi.aqs_fields_by_service, +* pyaqsapi.aqs_isavailable, +* pyaqsapi.aqs_isavailable, +* pyaqsapi.aqs_knownissues, +* pyaqsapi.aqs_knownissues, +* pyaqsapi.aqs_mas, +* pyaqsapi.aqs_parameters_by_class, +* pyaqsapi.aqs_pqaos, +* pyaqsapi.aqs_removeheader, +* pyaqsapi.aqs_revisionhistory, +* pyaqsapi.aqs_revisionhistory, +* pyaqsapi.aqs_sampledurations, +* pyaqsapi.aqs_sign_up, +* pyaqsapi.aqs_sign_up, +* pyaqsapi.aqs_sites_by_county, +* pyaqsapi.aqs_states, +* pyaqsapi.bybox.annualsummary, +* pyaqsapi.bybox.dailysummary, +* pyaqsapi.bybox.helperfunctions, +* pyaqsapi.bybox.monitors, +* pyaqsapi.bybox.quarterlysummary, +* pyaqsapi.bybox.sampledata, +* pyaqsapi.bycbsa.annualsummary, +* pyaqsapi.bycbsa.dailysummary, +* pyaqsapi.bycbsa.helperfunctions, +* pyaqsapi.bycbsa.monitors, +* pyaqsapi.bycbsa.quarterlysummary, +* pyaqsapi.bycbsa.sampledata, +* pyaqsapi.bycounty.annualsummary, +* pyaqsapi.bycounty.dailysummary, +* pyaqsapi.bycounty.helperfunctions, +* pyaqsapi.bycounty.monitors, +* pyaqsapi.bycounty.qa_annualperformanceeval, +* pyaqsapi.bycounty.qa_annualperformanceevaltransaction, +* pyaqsapi.bycounty.qa_blanks, +* pyaqsapi.bycounty.qa_collocated_assessments, +* pyaqsapi.bycounty.qa_flowrateaudit, +* pyaqsapi.bycounty.qa_flowrateverification, +* pyaqsapi.bycounty.qa_one_point_qc, +* pyaqsapi.bycounty.qa_pep_audit, +* pyaqsapi.bycounty.quarterlysummary, +* pyaqsapi.bycounty.sampledata, +* pyaqsapi.bycounty.transactionsample, +* pyaqsapi.byma.qa_annualpeferomanceeval, +* pyaqsapi.byma.qa_annualperformanceevaltransaction, +* pyaqsapi.byma.qa_blanks, +* pyaqsapi.byma.qa_collocated_assessments, +* pyaqsapi.byma.qa_flowrateaudit, +* pyaqsapi.byma.qa_flowrateverification, +* pyaqsapi.byma.qa_one_point_qc, +* pyaqsapi.byma.qa_pep_audit, +* pyaqsapi.byma.transactionsample, +* pyaqsapi.bypqao.qa_annualperformanceeval, +* pyaqsapi.bypqao.qa_annualperformanceevaltransaction, +* pyaqsapi.bypqao.qa_blanks, +* pyaqsapi.bypqao.qa_collocated_assessments, +* pyaqsapi.bypqao.qa_flowrateaudit, +* pyaqsapi.bypqao.qa_flowrateverification, +* pyaqsapi.bypqao.qa_one_point_qc, +* pyaqsapi.bypqao.qa_pep_audit, +* pyaqsapi.bysite.annualsummary, +* pyaqsapi.bysite.dailysummary, +* pyaqsapi.bysite.helperfunctions, +* pyaqsapi.bysite.monitors, +* pyaqsapi.bysite.qa_annualpeferomanceeval, +* pyaqsapi.bysite.qa_annualperformanceevaltransaction, +* pyaqsapi.bysite.qa_blanks, +* pyaqsapi.bysite.qa_collocated_assessments, +* pyaqsapi.bysite.qa_flowrateaudit, +* pyaqsapi.bysite.qa_flowrateverification, +* pyaqsapi.bysite.qa_one_point_qc, +* pyaqsapi.bysite.qa_pep_audit, +* pyaqsapi.bysite.quarterlysummary, +* pyaqsapi.bysite.sampledata, +* pyaqsapi.bysite.transactionsample, +* pyaqsapi.bystate.annualsummary, +* pyaqsapi.bystate.dailysummary, +* pyaqsapi.bystate.helperfunctions, +* pyaqsapi.bystate.monitors, +* pyaqsapi.bystate.qa_annualperformanceeval, +* pyaqsapi.bystate.qa_annualperformanceevaltransaction, +* pyaqsapi.bystate.qa_blanks, +* pyaqsapi.bystate.qa_collocated_assessments, +* pyaqsapi.bystate.qa_flowrateaudit, +* pyaqsapi.bystate.qa_flowrateverification, +* pyaqsapi.bystate.qa_one_point_qc, +* pyaqsapi.bystate.qa_pep_audit, +* pyaqsapi.bystate.quarterlysummary, +* pyaqsapi.bystate.sampledata, +* pyaqsapi.bystate.transactionsample + + +pyaqsapi functions are named according to the service and filter variables that +are available by the AQS Data Mart API. Refer to `Air Quality System (AQS) API +`_ for full details of the +AQS DataMart API. + + +Variable descriptions and usage +=============================== +These are all the available variables that can be used with various functions +exported from the pyaqsapi library listed alphabetically. Not all of these +variables are used with every function, and not all of these parameters are +required. See the :ref: `pyaqsapi functional families` section to +see which parameters are used with each function. + +* AQSobject: + an object of type AQSAPI_V2 that is returned from pyaqsapi + aggregate functions wheen return_header is True. + +* bdate: + a date object which represents the begin date of the data selection. + Only data on or after this date will be returned. + +* cbdate (optional): + a date object which represents the "beginning date of last change" that + indicates when the data was last updated. cbdate is used to filter data + based on the change date. Only data that changed on or after this + date will be returned. This is an optional variable which defaults to None. + +* cedate (optional): + a date object which represents the "end date of last change" that indicates + when the data was last updated. cedate is used to filter data based on the + change date. Only data that changed on or before this date will be + returned. This is an optional variable which defaults to None. + +* countycode: + a character object which represents the 3 digit state FIPS code for the + county being requested (with leading zero(s)). Refer to + `aqs_counties_by_state()`_ for a table of available county codes for each + state. + +* duration (optional): + a character string that represents the parameter duration code that limits + returned data to a specific sample duration. The default value of None + will result in no filtering based on duration code. Valid durations + include actual sample durations and not calculated durations such as 8 hour + CO or O\ :sub:`3`\ rolling averages, 3/6 day PM averages or Pb 3 month + rolling averages. Refer to `aqs_sampledurations()`_ for a table of all + available duration codes. + +* edate: + a date object which represents the end date of the data selection. Only + data on or before this date will be returned. + +* email: + a character object which represents the email account that will be used to + register with the AQS API or change an existing user's key. A verification + email will be sent to the account specified. + +* key: + a character object which represents the key used in conjunction with the + username given to connect to AQS Data Mart. + +* MA_code: + a character object which represents the 4 digit AQS Monitoring Agency code + (with leading zeroes). + +* maxlat: + a character object which represents the maximum latitude of a geographic + box. Decimal latitude with north begin positive. Only data south of this + latitude will be returned. + +* maxlon: + a character object which represents the maximum longitude of a + geographic box. Decimal longitude with east being positive. Only + data west of this longitude will be returned. Note that -80 is less + than -70. + +* minlat: + a character object which represents the minimum latitude of a + geographic box. Decimal latitude with north being positive. + Only data north of this latitude will be returned. + +* minlon: + a character object which represents the minimum longitude of a + geographic box. Decimal longitude with east begin positive. Only + data east of this longitude will be returned. + +* parameter: + a character list or single character object which represents the parameter + code of the air pollutant related to the data being requested. + +* return_Header: + If False (default) only returns data requested as a pandas DataFrame. If + True returns a AQSAPI_V2 object. + +* service: + a string which represents the services provided by the AQS API. For a list + of available services refer to + `_` + for the complete listing of services available through the EPA + AQS Datamart API + +* sitenum: + a character object which represents the 4 digit site number (with + leading zeros) within the county and state being requested. + +* stateFIPS: + a character object which represents the 2 digit state FIPS code + (with leading zero) for the state being requested. + +* pqao_code: + a character object which represents the 4 digit AQS Primary Quality + Assurance Organization code (with leading zeroes). + +* username: + a character object which represents the email account that will be used to + connect to the AQS API. + +pyaqsapi functional families +============================ + +Sign up and credentials +----------------------- +The functions included in this family of functions are: + +:: + +* aqs_credentials +* aqs_sign_up + +These functions are used to sign up with Data Mart and to store credential + information to use with pyaqsapi. The aqs_sign_up function takes + one parameter: + +* email: + +The aqs_credentials function takes two parameters: + +* username: +* key: + +Data Mart API metadata functions +-------------------------------- +The functions included in this family of functions are: + +:: + +* aqs_isavailable +* aqs_knownissues +* aqs_fields_by_service +* aqs_revisionhistory + +These functions return Data Mart meta data + + The aqs_isavailable function takes no parameters and returns a + table which details the status of the AQS API. + + The aqs_fields_by_service function takes one parameter, service, + which is a character object which represents the services provided by + the AQS API. For a list of available services see + `Air Quality System (AQS) API - Services Overview + `_ + + The aqs_knownissues function takes no parameters and Returns a + table of any known issues with system functionality or the data. These are + usually issues that have been identified internally and will require some + time to correct in Data Mart or the API. This function implements a direct + API call to Data Mart and returns data directly from the API. Issues + returned via this function do not include any issues from the pyaqsapi + package. + + The aqs_revisionhistory function is used to query Data Mart for the + change history to the API. + +Data Mart API list functions +---------------------------- +The functions included in this family of functions are: +:: + +* aqs_cbsas, +* aqs_classes, +* aqs_counties_by_state, +* aqs_fields_by_service, +* aqs_isavailable, +* aqs_knownissues, +* aqs_mas, +* aqs_parameters_by_class, +* aqs_pqaos, +* aqs_revisionhistory, +* aqs_sampledurations, +* aqs_sites_by_county, +* aqs_states + + + List functions return the API status, API options or groupings that can be + used in conjunction with other API calls. By default each function in this + category returns results as a DataTable. If return_header parameter is set + to True a AQSAPI_v2 object is returned instead. + + aqs_cbsas returns a table of all available Core Based Statistical + Areas (cbsas) and their respective cbsa codes. + + aqs_states takes no arguments and returns a table of the available + states and their respective state FIPS codes. + + _`aqs_sampledurations()` + aqs_sampledurations takes no arguments and returns a table of the + available sample duration code used to construct other requests. + + aqs_classes takes no arguments and returns a table of parameter + classes (groups of parameters, i.e. "criteria" or "all"). + + _`aqs_counties_by_state()` + aqs_counties_by_state takes one parameter, stateFIPS, which is a two + digit state FIPS code for the state being requested represented as a + character object and returns a table of counties and their + respective FIPS code for the state requested. Use aqs_states to + receive a table of valid state FIPS codes. + + aqs_sites_by_county takes two parameters, stateFIPS, which is a + two digit state FIPS code for the state being requested and county_code + which is a three digit county FIPS code for the county being requested, + both stateFIPS and county_code should be encoded as a character object. + This function returns a table of all air monitoring sites with the + requested state and county FIPS code combination. + + aqs_pqaos takes no parameters and returns an AQSAPI_V2 + object containing a table of primary quality assurance + organizations (pqaos). + + aqs_mas takes no parameters and returns an AQSAPI_V2 + object containing a table of monitoring agencies (MA). + +Data Mart aggregate functions +----------------------------- + +.. note:: + AQS Data Mart API restricts the maximum amount of monitoring data to one + full year of data per API call. These functions are able to return multiple + years of data by making repeated calls to the API. Each call to the Data + Mart API will take time to complete. The more years of data being requested + the longer pyaqsapi will take to return the results. + +These functions retrieve aggregated data from the Data Mart API and are +grouped by how each function aggregates the data. There are 5 different +families of related aggregate functions. These families are arranged by how +the Data Mart API groups the returned data, bysite, bycounty, bystate, +by (bybox) and +by (bycbsa). Within each family +of aggregated data functions there are functions that call on the 10 +different services that the Data Mart API provides. All Aggregate +functions return a pandas DataFrame by default. If the return_Header +parameter is set to True an AQSAPI_V2 object is returned instead. + +These fourteen services are: + +1. Monitors: + Returns operational information about the samplers (monitors) + used to collect the data. Includes identifying information, + operational dates, operating organizations, etc. Functions + using this service contain monitors in the function name. +2. Sample Data: + Returns sample data - the most fine grain data reported to + EPA. Usually hourly, sometimes 5-minute, 12-hour, etc. + This service is available in several geographic selections + based on geography: site, county, state, cbsa (core based + statistical area, a grouping of counties), or + by latitude/longitude bounding box. Functions using this + service contain sampledata in the function name. + All Sample Data functions accept two additional, optional + parameters; cbdate and cedate. + + * cbdate: + a date object which represents a "beginning date of last + change" that indicates when the data was last updated. + cbdate is used to filter data based on the change date. + Only data that changed on or after this date will be + returned. This is an optional variable which defaults to + None. + + * cedate: + a date object which represents an "end date of last change" + that indicates when the data was last updated. cedate is + used to filter data based on the change date. Only data + that changed on or before this date will be returned. This + is an optional variable which defaults to None. + + * duration: + an optional character string that represents the parameter + duration code that limits returned data to a specific sample + duration. The default value of None results in no filtering + based on duration code. Valid durations include actual sample + durations and not calculated durations such as 8 hour + CO or $O_3$ rolling averages, 3/6 day PM averages or + Pb 3 month rolling averages. Refer to + `aqs_sampledurations()`_ for a list of all available + duration codes. + +3. Daily Summary Data: + Returns data summarized at the daily level. All daily + summaries are calculated on midnight to midnight basis in local time. + Variables returned include date, mean value, maximum value, etc. Functions + using this service contain Dailysummary in the function name. All Daily + Summary Data functions accept two additional parameters; cbdate and cedate. + + * cbdate: + a date object which represents a "beginning date of last change" + that indicates when the data was last updated. cbdate is used to + filter data based on the change date. Only data that changed on or + after this date will be returned. This is an optional variable which + defaults to None. + + * cedate: + a date object which represents an "end date of last change" + that indicates when the data was last updated. cedate is + used to filter data based on the change date. Only data + that changed on or before this date will be returned. This + is an optional variable which defaults to None. + +4. Annual Summary Data: + Returns data summarized at the yearly level. Variables include mean value, + maxima, percentiles, etc. Functions using this service contain annualdata + in the function name. All Annual Summary Data functions accept two + additional parameters; cbdate and cedate. + + * cbdate: + a date object which represents a "beginning date of last + change" that indicates when the data was last updated. cbdate + is used to filter data based on the change date. Only data + that changed on or after this date will be returned. This is + an optional variable which defaults to None. + + * cedate: + a date object which represents an "end date of last change" + that indicates when the data was last updated. cedate is used + to filter data based on the change date. Only data that + changed on or before this date will be returned. This is an + optional variable which defaults to None. + +5. Quarterly Summary Data: + Returns data summarized at the quarterly level. Variables include mean + value, maxima, percentiles, etc. Functions using this service + contain quarterlydata in the function name. All Annual Summary Data + functions accept two additional parameters; cbdate and cedate. + + * cbdate: + a date object which represents a "beginning date of last change" that + indicates when the data was last updated. cbdate is used to filter + data based on the change date. Only data that changed on or after + this date will be returned. This is an optional variable which + defaults to None. + + * cedate: + a date object which represents an "end date of last change" + that indicates when the data was last updated. cedate is used + to filter data based on the change date. Only data that + changed on or before this date will be returned. This is an + optional variable which defaults to None. + +6. Quality Assurance - Blanks Data: + Quality assurance data - blanks samples. Blanks are unexposed sample + collection devices (e.g., filters) that are transported with the + exposed sample devices to assess if contamination is occurring during the + transport or handling of the samples. Functions using this service contain + qa_blanks in the function name. + +7. Quality Assurance - Collocated Assessments: + Quality assurance data - collocated assessments. Collocated assessments + are pairs of samples collected by different samplers at the same time + and place. (These are "operational" samplers, assessments with + independently calibrated samplers are called "audits".). Functions using + this service contain qa_collocated_assessments in the function name. + +8. Quality Assurance - Flow Rate Verifications: + Quality assurance data - flow rate verifications. Several times per year, + each PM monitor must have it's (fixed) flow rate verified by an operator + taking a measurement of the flow rate. Functions using this service contain + qa_flowrateverification in the function name. + +9. Quality Assurance - Flow Rate Audits: + Quality assurance data - flow rate audits. At least twice year, each PM + monitor must have it's flow rate measurement audited by an expert using a + different method than is used for flow rate verifications. Functions using + this service contain qa_flowrateaudit in the function name. + +10. Quality Assurance - One Point Quality Control Raw Data: + Quality assurance data - one point quality control check raw data. + At least every two weeks, certain gaseous monitors must be challenged with + a known concentration to determine monitor performance. Functions using + this service contain qa_one_point_qc in the function name. + +11. Quality Assurance - pep Audits: + Quality assurance data - performance evaluation program (pep) audits. + Pep audits are independent assessments used to estimate total measurement + system bias with a primary quality assurance organization. Functions + using this service contain qa_pep_audit in the function name. + +12. Transaction Sample - AQS Submission data in transaction format (RD): + Transaction sample data - The raw transaction sample data uploaded to AQS + by the agency responsible for data submissions in RD format. Functions + using this service contain transactionsample in the function name. + Transaction sample data is only available aggregated by site, county, + state or monitoring agency. + +13. Quality Assurance - Annual Performance Evaluations: + Quality assurance data - Annual performance evaluations. A performance + evaluation must be conducted on each primary monitor once per year. The + percent differences between known and measured concentrations at several + levels are used to assess the quality of the monitoring data. Functions + using this service contain aqs_qa_annualperformanceeval in the function + name. Annual performance in transaction format are only available + aggregated by site, county, state, monitoring agency, and primary quality + assurance organization. Annual performance evaluations are only available + aggregated by site, county, state, monitoring agency, and primary quality + assurance organization. + +14. Quality Assurance - Annual performance Evaluations in transaction \ + format (RD): + Quality assurance data - The raw transaction annual performance + evaluations data in RD format. Functions using this service contain + aqs_qa_annualperformanceevaltransaction in the function name. Annual + performance evaluations in transaction format are only available + aggregated by site, county, state, monitoring agency, and primary quality + assurance organization. + + +Data Mart aggregate functions bysite +-------------------------------------- +The bysite submodule exports the following functions: +:: + +* bysite.annualsummary, +* bysite.dailysummary, +* bysite.helperfunctions, +* bysite.monitors, +* bysite.qa_annualpeferomanceeval, +* bysite.qa_annualperformanceevaltransaction, +* bysite.qa_blanks, +* bysite.qa_collocated_assessments, +* bysite.qa_flowrateaudit, +* bysite.qa_flowrateverification, +* bysite.qa_one_point_qc, +* bysite.qa_pep_audit, +* bysite.quarterlysummary, +* bysite.sampledata, +* bysite.transactionsample + +Functions exported by the bysite submodule aggregate data at the site level. + bysite functions accept the following variables: + +* parameter: +* bdate: +* edate: +* stateFIPS: +* countycode: +* sitenum: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata functions and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata functions and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + +Data Mart aggregate functions bycounty +---------------------------------------- +The bycounty submodule exports the following functions: +:: + +* bycounty.annualsummary, +* bycounty.dailysummary, +* bycounty.helperfunctions, +* bycounty.monitors, +* bycounty.qa_annualperformanceeval, +* bycounty.qa_annualperformanceevaltransaction, +* bycounty.qa_blanks, +* bycounty.qa_collocated_assessments, +* bycounty.qa_flowrateaudit, +* bycounty.qa_flowrateverification, +* bycounty.qa_one_point_qc, +* bycounty.qa_pep_audit, +* bycounty.quarterlysummary, +* bycounty.sampledata, +* bycounty.transactionsample + +Functions exported by the bycounty submodule aggregate data at the county + level. All functions accept the following variables: + +* parameter: +* bdate: +* edate: +* stateFIPS: +* countycode: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + +Data Mart aggregate functions bystate +--------------------------------------- +The bystate submodule exports the following functions: +:: + +* bystate.annualsummary, +* bystate.dailysummary, +* bystate.helperfunctions, +* bystate.monitors, +* bystate.qa_annualperformanceeval, +* bystate.qa_annualperformanceevaltransaction, +* bystate.qa_blanks, +* bystate.qa_collocated_assessments, +* bystate.qa_flowrateaudit, +* bystate.qa_flowrateverification, +* bystate.qa_one_point_qc, +* bystate.qa_pep_audit, +* bystate.quarterlysummary, +* bystate.sampledata, +* bystate.transactionsample + +Functions exported by the bystate submodule aggregate data at the state level. + All functions accept the following variables: + +* parameter: +* bdate: +* edate: +* stateFIPS: +* countycode: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + +Data Mart aggregate functions by Monitoring agency (MA) +------------------------------------------------------- +The byma submodule exports the following functions: +:: + +* byma.qa_annualpeferomanceeval, +* byma.qa_annualperformanceevaltransaction, +* byma.qa_blanks, +* byma.qa_collocated_assessments, +* byma.qa_flowrateaudit, +* byma.qa_flowrateverification, +* byma.qa_one_point_qc, +* byma.qa_pep_audit, +* byma.transactionsample + +Functions in this family of functions aggregate data at the state level. + All functions accept the following variables: + +* parameter: +* bdate: +* edate: +* stateFIPS: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata functions and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + + +Functions exported by the byma submodule aggregate data at the + Monitoring Agency (MA) level. All functions accept the following variables: + +* parameter: +* bdate: +* edate: +* MA_code: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + +Data Mart aggregate functions by Core Based Statistical Area (cbsa) +------------------------------------------------------------------- +The bycbsa submodule exports the following functions: +:: + +* bycbsa.annualsummary, +* bycbsa.dailysummary, +* bycbsa.helperfunctions, +* bycbsa.monitors, +* bycbsa.quarterlysummary, +* bycbsa.sampledata + +Functions exported by the bycbsa submodule aggregate data at the Core Based + Statistical Area (cbsa, as defined by the US Census Bureau) level. + All functions accept the following variables: + +* parameter: +* bdate: +* edate: +* cbsa_code: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + + +Data Mart aggregate functions by Primary Quality Assurance Organization (pqao) +------------------------------------------------------------------------------ +The bypqao submodule exports the following functions: +:: + +* bypqao.qa_annualperformanceeval, +* bypqao.qa_annualperformanceevaltransaction, +* bypqao.qa_blanks, +* bypqao.qa_collocated_assessments, +* bypqao.qa_flowrateaudit, +* bypqao.qa_flowrateverification, +* bypqao.qa_one_point_qc, +* bypqao.qa_pep_audit + +Functions exported by the bypqao submodule aggregate data at the + Primary Quality Assurance Organization (pqao) level. All functions accept + the following variables: + +* parameter: +* bdate: +* edate: +* pqao_code: +* return_header (optional): set to False by default. + +Data Mart aggregate functions by latitude/longitude bounding box (bybox) +-------------------------------------------------------------------------- +The bybox submodule exports the following functions: +:: + +* bybox.annualsummary, +* bybox.dailysummary, +* bybox.helperfunctions, +* bybox.monitors, +* bybox.quarterlysummary, +* bybox.sampledata + +Functions exported by the bybox submodule aggregate data by a + latitude/longitude bounding box (bybox) level. All functions accept the + following variables: + +* parameter: +* bdate: +* edate: +* minlat: +* minlon: +* maxlon: +* maxlat: +* cbdate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* cedate (optional): + (This parameter is only used in conjunction with sampledata, dailysummary, + annualdata and quarterlysummary functions). +* return_header (optional): + set to False by default. +* duration (optional): + (This parameter is only used in conjunction with sampledata functions). + +pyaqsapi Miscellaneous functions +-------------------------------- + +These are miscellaneous functions exported by pyaqsapi. + +aqs_removeheader is the function that the pyaqsapi library +uses internally to coerce an AQSAPI_V2 object into a pandas DataFrame. +This is useful if the user saves the output from another pyaqsapi function +with return_header = True set but later decides that they want just a +simple pandas DataFrame object. This function takes only one variable: + +* AQSobject: + + diff --git a/docs/_build/html/_sources/manual/pyaqsapiusagetipsandprecautions.rst.txt b/docs/_build/html/_sources/manual/pyaqsapiusagetipsandprecautions.rst.txt new file mode 100644 index 0000000..88a0462 --- /dev/null +++ b/docs/_build/html/_sources/manual/pyaqsapiusagetipsandprecautions.rst.txt @@ -0,0 +1,61 @@ +:orphan: + +.. index:: Useage tips and precuations +.. sectionauthor:: Clinton Mccrowey \\ clinton \\ epa.gov\> + +Usage tips and precautions +========================== + +This section contains suggestions for completing certain data related tasks. + +* Determine if or how much data exists for a time-parameter-geography + combination: + + * Retrieve data using the annualdata service. + * If no records are returned, we do not have the data. + * If records are returned, use the observation count to determine the + temporal and geographic distribution of the data. + +* Monthly averages: + + * AQS does not routinely calculate monthly aggregate statistics. + * If you need these, you must calculate them yourself. + * These can be calculated from the sample data or the daily data without + loss of fidelity. + +* Determine a single value for a site with collocated monitors: + + * Many sites will have collocated monitors - monitors collecting the same + parameter at the same time. + * The API currently provides only monitor level values. (site-level values + will be added in the future.) + * For some criteria pollutants (PM2.5, ozone, lead, and NO2), the + regulations define procedures for defining a single site-level value. + * For other pollutants, determining a single site-level value is left to + the investigator. + +* **Please adhere to the following when using the AQS Data Mart API**: + + * *Limit the size of queries*. The AQS Data Mart contains billions of + values and you may request more than you intend. If you are unsure of + the amount of data, start small and work your way up. Please limit + queries to 1,000,000 rows of data each. You can use the + "observation count" field on the annualdata service to determine how + much data exists for a time-parameter-geography combination. + * *Limit the frequency of queries*. The AQS Data Mart can process a limited + load. Please wait for one request to complete before submitting another + and do not make more than 10 requests per minute. + * Be advised that RAQSAPI is capable of retrieving results for multiple + pollutants, this can result in the amount of data being returned being + multiplied by the number of pollutants being requested. + * Be advised that the AQS Data Mart API limits certain data requests to + one year of data at a time with the exception of the Monitor service. + In order to retrieve multiple years of data for these functions the + RAQSAPI library conveniently sends multiple API requests to the Data Mart + API server, one request for each year, this can result in the amount of + data being returned being multiplied by the number of years of data being + requested. + +**The AQS Data Mart administrators may disable accounts without notice for +failure to adhere to these terms (Though they will contact the offending +user via the email address provided)** \ No newline at end of file diff --git a/docs/_build/html/_sources/modules.rst.txt b/docs/_build/html/_sources/modules.rst.txt new file mode 100644 index 0000000..6610862 --- /dev/null +++ b/docs/_build/html/_sources/modules.rst.txt @@ -0,0 +1,7 @@ +pyaqsapi +======== + +.. toctree:: + :maxdepth: 4 + + pyaqsapi diff --git a/docs/_build/html/_sources/pyaqsapi.bybox.rst.txt b/docs/_build/html/_sources/pyaqsapi.bybox.rst.txt new file mode 100644 index 0000000..97d5a76 --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.bybox.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.bybox package +====================== + +.. automodule:: pyaqsapi.bybox + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.bybox.bybox module +--------------------------- + +.. automodule:: pyaqsapi.bybox.bybox + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.bycbsa.rst.txt b/docs/_build/html/_sources/pyaqsapi.bycbsa.rst.txt new file mode 100644 index 0000000..219bb11 --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.bycbsa.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.bycbsa package +======================= + +.. automodule:: pyaqsapi.bycbsa + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.bycbsa.bycbsa module +----------------------------- + +.. automodule:: pyaqsapi.bycbsa.bycbsa + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.bycounty.rst.txt b/docs/_build/html/_sources/pyaqsapi.bycounty.rst.txt new file mode 100644 index 0000000..1db8378 --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.bycounty.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.bycounty package +========================= + +.. automodule:: pyaqsapi.bycounty + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.bycounty.bycounty module +--------------------------------- + +.. automodule:: pyaqsapi.bycounty.bycounty + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.byma.rst.txt b/docs/_build/html/_sources/pyaqsapi.byma.rst.txt new file mode 100644 index 0000000..3964b9d --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.byma.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.byma package +===================== + +.. automodule:: pyaqsapi.byma + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.byma.byma module +------------------------- + +.. automodule:: pyaqsapi.byma.byma + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.bypqao.rst.txt b/docs/_build/html/_sources/pyaqsapi.bypqao.rst.txt new file mode 100644 index 0000000..d6acafb --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.bypqao.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.bypqao package +======================= + +.. automodule:: pyaqsapi.bypqao + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.bypqao.bypqao module +----------------------------- + +.. automodule:: pyaqsapi.bypqao.bypqao + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.bysite.rst.txt b/docs/_build/html/_sources/pyaqsapi.bysite.rst.txt new file mode 100644 index 0000000..9ecb9f2 --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.bysite.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.bysite package +======================= + +.. automodule:: pyaqsapi.bysite + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.bysite.bysite module +----------------------------- + +.. automodule:: pyaqsapi.bysite.bysite + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.bystate.rst.txt b/docs/_build/html/_sources/pyaqsapi.bystate.rst.txt new file mode 100644 index 0000000..f3f286a --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.bystate.rst.txt @@ -0,0 +1,18 @@ +pyaqsapi.bystate package +======================== + +.. automodule:: pyaqsapi.bystate + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +pyaqsapi.bystate.bystate module +------------------------------- + +.. automodule:: pyaqsapi.bystate.bystate + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/pyaqsapi.rst.txt b/docs/_build/html/_sources/pyaqsapi.rst.txt new file mode 100644 index 0000000..a3fc0ad --- /dev/null +++ b/docs/_build/html/_sources/pyaqsapi.rst.txt @@ -0,0 +1,56 @@ +pyaqsapi package +================ + +.. automodule:: pyaqsapi + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + pyaqsapi.bybox + pyaqsapi.bycbsa + pyaqsapi.bycounty + pyaqsapi.byma + pyaqsapi.bypqao + pyaqsapi.bysite + pyaqsapi.bystate + +Submodules +---------- + +pyaqsapi.helperfunctions module +------------------------------- + +.. automodule:: pyaqsapi.helperfunctions + :members: + :undoc-members: + :show-inheritance: + +pyaqsapi.listfunctions module +----------------------------- + +.. automodule:: pyaqsapi.listfunctions + :members: + :undoc-members: + :show-inheritance: + +pyaqsapi.metadatafunctions module +--------------------------------- + +.. automodule:: pyaqsapi.metadatafunctions + :members: + :undoc-members: + :show-inheritance: + +pyaqsapi.setupfunctions module +------------------------------ + +.. automodule:: pyaqsapi.setupfunctions + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css new file mode 100644 index 0000000..7ebbd6d --- /dev/null +++ b/docs/_build/html/_static/basic.css @@ -0,0 +1,914 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css new file mode 100644 index 0000000..88ba55b --- /dev/null +++ b/docs/_build/html/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} \ No newline at end of file diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot b/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg b/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf b/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff b/docs/_build/html/_static/css/fonts/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff2 b/docs/_build/html/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff b/docs/_build/html/_static/css/fonts/lato-normal.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff2 b/docs/_build/html/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal.woff2 differ diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css new file mode 100644 index 0000000..6843d97 --- /dev/null +++ b/docs/_build/html/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js new file mode 100644 index 0000000..0398ebb --- /dev/null +++ b/docs/_build/html/_static/doctools.js @@ -0,0 +1,149 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js new file mode 100644 index 0000000..7e4c114 --- /dev/null +++ b/docs/_build/html/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/docs/_build/html/_static/file.png differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.eot b/docs/_build/html/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 0000000..3361183 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.ttf b/docs/_build/html/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 0000000..29f691d Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.woff b/docs/_build/html/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 b/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 0000000..3d41549 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 0000000..f402040 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.eot b/docs/_build/html/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 0000000..3f82642 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.ttf b/docs/_build/html/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 0000000..b4bfc9b Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.woff b/docs/_build/html/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 b/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.eot b/docs/_build/html/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 0000000..11e3f2a Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.ttf b/docs/_build/html/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 0000000..74decd9 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.woff b/docs/_build/html/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 b/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 0000000..79dc8ef Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 0000000..df5d1df Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 0000000..2f7ca78 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 0000000..eb52a79 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/docs/_build/html/_static/js/badge_only.js b/docs/_build/html/_static/js/badge_only.js new file mode 100644 index 0000000..526d723 --- /dev/null +++ b/docs/_build/html/_static/js/badge_only.js @@ -0,0 +1 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); \ No newline at end of file diff --git a/docs/_build/html/_static/js/theme.js b/docs/_build/html/_static/js/theme.js new file mode 100644 index 0000000..1fddb6e --- /dev/null +++ b/docs/_build/html/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t +
Languages
+ ${config.projects.translations + .map( + (translation) => ` +
+ ${translation.language.code} +
+ `, + ) + .join("\n")} + + `; + return languagesHTML; + } + + function renderVersions(config) { + if (!config.versions.active.length) { + return ""; + } + const versionsHTML = ` +
+
Versions
+ ${config.versions.active + .map( + (version) => ` +
+ ${version.slug} +
+ `, + ) + .join("\n")} +
+ `; + return versionsHTML; + } + + function renderDownloads(config) { + if (!Object.keys(config.versions.current.downloads).length) { + return ""; + } + const downloadsNameDisplay = { + pdf: "PDF", + epub: "Epub", + htmlzip: "HTML", + }; + + const downloadsHTML = ` +
+
Downloads
+ ${Object.entries(config.versions.current.downloads) + .map( + ([name, url]) => ` +
+ ${downloadsNameDisplay[name]} +
+ `, + ) + .join("\n")} +
+ `; + return downloadsHTML; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const flyout = ` +
+ + Read the Docs + v: ${config.versions.current.slug} + + +
+
+ ${renderLanguages(config)} + ${renderVersions(config)} + ${renderDownloads(config)} +
+
On Read the Docs
+
+ Project Home +
+
+ Builds +
+
+ Downloads +
+
+
+
Search
+
+
+ +
+
+
+
+ + Hosted by Read the Docs + +
+
+ `; + + // Inject the generated flyout into the body HTML element. + document.body.insertAdjacentHTML("beforeend", flyout); + + // Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout. + document + .querySelector("#flyout-search-form") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); + }) +} + +if (themeLanguageSelector || themeVersionSelector) { + function onSelectorSwitch(event) { + const option = event.target.selectedIndex; + const item = event.target.options[option]; + window.location.href = item.dataset.url; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const versionSwitch = document.querySelector( + "div.switch-menus > div.version-switch", + ); + if (themeVersionSelector) { + let versions = config.versions.active; + if (config.versions.current.hidden || config.versions.current.type === "external") { + versions.unshift(config.versions.current); + } + const versionSelect = ` + + `; + + versionSwitch.innerHTML = versionSelect; + versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + + const languageSwitch = document.querySelector( + "div.switch-menus > div.language-switch", + ); + + if (themeLanguageSelector) { + if (config.projects.translations.length) { + // Add the current language to the options on the selector + let languages = config.projects.translations.concat( + config.projects.current, + ); + languages = languages.sort((a, b) => + a.language.name.localeCompare(b.language.name), + ); + + const languageSelect = ` + + `; + + languageSwitch.innerHTML = languageSelect; + languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + else { + languageSwitch.remove(); + } + } + }); +} + +document.addEventListener("readthedocs-addons-data-ready", function (event) { + // Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav. + document + .querySelector("[role='search'] input") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); +}); \ No newline at end of file diff --git a/docs/_build/html/_static/language_data.js b/docs/_build/html/_static/language_data.js new file mode 100644 index 0000000..c7fe6c6 --- /dev/null +++ b/docs/_build/html/_static/language_data.js @@ -0,0 +1,192 @@ +/* + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/docs/_build/html/_static/minus.png b/docs/_build/html/_static/minus.png new file mode 100644 index 0000000..d96755f Binary files /dev/null and b/docs/_build/html/_static/minus.png differ diff --git a/docs/_build/html/_static/plus.png b/docs/_build/html/_static/plus.png new file mode 100644 index 0000000..7107cec Binary files /dev/null and b/docs/_build/html/_static/plus.png differ diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css new file mode 100644 index 0000000..84ab303 --- /dev/null +++ b/docs/_build/html/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #E40000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #008400 } /* Generic.Inserted */ +.highlight .go { color: #717171 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #687822 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #767600 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js new file mode 100644 index 0000000..2c774d1 --- /dev/null +++ b/docs/_build/html/_static/searchtools.js @@ -0,0 +1,632 @@ +/* + * Sphinx JavaScript utilities for the full-text search. + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename, kind] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + SearchResultKind.title, + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + SearchResultKind.object, + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + SearchResultKind.text, + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/docs/_build/html/_static/sphinx_highlight.js b/docs/_build/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/docs/_build/html/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html new file mode 100644 index 0000000..476d95a --- /dev/null +++ b/docs/_build/html/genindex.html @@ -0,0 +1,772 @@ + + + + + + + + Index — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Index

+ +
+ A + | D + | E + | G + | I + | L + | M + | P + | Q + | S + | T + | U + +
+

A

+ + + +
+ +

D

+ + +
+ +

E

+ + +
+ +

G

+ + + +
+ +

I

+ + + +
+ +

L

+ + +
+ +

M

+ + + +
+ +

P

+ + + +
    +
  • + pyaqsapi.bypqao + +
  • +
  • + pyaqsapi.bypqao.bypqao + +
  • +
  • + pyaqsapi.bysite + +
  • +
  • + pyaqsapi.bysite.bysite + +
  • +
  • + pyaqsapi.bystate + +
  • +
  • + pyaqsapi.bystate.bystate + +
  • +
  • + pyaqsapi.helperfunctions + +
  • +
  • + pyaqsapi.listfunctions + +
  • +
  • + pyaqsapi.metadatafunctions + +
  • +
  • + pyaqsapi.setupfunctions + +
  • +
+ +

Q

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html new file mode 100644 index 0000000..eae761c --- /dev/null +++ b/docs/_build/html/index.html @@ -0,0 +1,1443 @@ + + + + + + + + + pyaqsapi user documentation — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi user documentation

+
+
+
+
orphan:
+

+
+
+

EPA Disclaimer

+
+

Note

+

This software/application was developed by the U.S. Environmental +Protection Agency (USEPA). No warranty expressed or implied is made +regarding the accuracy or utility of the system, nor shall the act of +distribution constitute any such warranty. The USEPA has relinquished +control of the information and no longer has responsibility to protect +the integrity, confidentiality or availability of the information. Any +reference to specific commercial products, processes, or services by +service mark, trademark, manufacturer, or otherwise, does not constitute +or imply their endorsement, recommendation or favoring by the USEPA. The +USEPA seal and logo shall not be used in any manner to imply endorsement +of any commercial product or activity by the USEPA or the United States +Government.

+
+
+
+

AQS DataMart Disclaimer

+
+

Warning

+

US EPA’s AQS Data Mart API V2 is currently in beta phase of development, +the API interface has not been finalized. This means that certain +functionality of the API may change or be removed without notice. As a +result, this package is also currently marked as beta and may also change +to reflect any changes made to the Data Mart API or in respect to +improvements in the design, functionality, quality and documentation of +this package. The authors assume no liability for any problems that may +occur as a result of using this package, the Data Mart service, any +software, service, hardware, or user accounts that may utilize this +package.

+
+
+
orphan:
+

+
+
+
+

Introduction

+

The pyaqsapi package for the python 3 programming environment allows a python 3 +programming environment to connect to and retrieve data from the United States +Environmental Protection Agency’s (US EPA) Air Quality System (AQS) Data Mart +API v2 (Air Quality System) interface directly. +This package enables the data user to omit legacy challenges including coercing +data from a JSON object to a usable python 3 object, retrieving multiple years +of data, formatting API requests, retrieving results, handling credentials, +requesting multiple pollutant data and rate limiting data requests. +All the basic functionality of the API have been implemented that are available +from the AQS API Data Mart server. The library connects to AQS Data Mart API +via Hypertext Transfer Protocol (HTTP) so there is no need to install external +ODBC drivers, configure ODBC connections or deal with the security +vulnerabilities associated with them. Most functions have a parameter, +return_header which by default is set to FALSE. If the user decides to +set return_header to TRUE, then that function will return a python 3 +AQSAPI_V2 object. An AQSAPI_V2 object has instance methods for retrieving the +data requested, header information, and other metadata related to the API call. +After each call to the API a five second stall is invoked to help prevent +overloading the Data Mart API server and to serve as a simple rate limit.

+
+
orphan:
+

+
+
+
+

About the timeliness of AQS Data

+

EPA’s AQS Datamart API, the service that pyaqsapi retrieves data from, does not +host real time (collected now/today) data. If real time data is needed, please +use the AirNow API and direct all questions toward real time data there. +pyaqsapi does not work with AirNow and cannot retrieve real time data. For more +details see section 7.1 of the About AQS Data page .

+
+
orphan:
+

+
+
+
+

Install pyaqsapi

+

To install pyaqsapi first clone the pyaqsapi repository.

+
git clone https://github.com/USEPA/pyaqsapi.git
+
+
+

Next, in the project’s root directory use pip to install the proper +dependencies that are required to build +and install pyaqsapi.

+
pip install -r requirements.txt
+
+
+

While still in the project’s root directory use setuptools to build and pip +to install the package.

+
python -m build .
+python -m pip install .
+
+
+
+
orphan:
+

+
+
+
+

Load pyaqsapi

+

Like any other python package make sure that you are loading pyaqsapi in the +same virtual environment where pyaqsapi was installed. Load pyaqsapi in the +same any other python package is loaded.

+
import pyaqsapi as aqs
+
+
+
+
orphan:
+

+
+
+
+

Using pyaqsapi

+

For those who are already familiar with using +RAQSAPI then the pyaqsapi API should feel familiar with a few minor differences +regarding how the data is returned.

+

By default data is returned as a pandas Data Frames . +Exported functions from pyaqsapi have a parameter RETURN_HEADER, by default +this parameter is False. When False functions simply return the requested +data as a pandas Data Frame. If RETURN_HEADER is manually set to True a list of +AQSAPI_V2 python 3 objects are returned. Use the get_data() class method to +retrieve the data and the get_header() class method to retrieve header +information.

+
+
+

Sign up and setting up user credentials with the pyaqsapi library

+

If you have not already done so you will need to sign up with AQS Data Mart +using aqs_sign_up function, this function takes one input, “email,” which +is a python 3 character object, that represents the email address that you want +to use as a user credential to the AQS Data Mart service. After a successful +call to aqs_sign_up an email message will be sent to the email address provided +with a new Data Mart key which will be used as a credential key to access the +Data Mart API. The aqs_sign_up function can also be used to regenerate a new +key for an existing user, to generate a new key simply call the aqs_sign_up +function with the parameter “email” set to an existing account. A new key will +be e-mailed to the account given.

+

The credentials used to access the Data Mart API service are stored in as a +python global variable that needs to be set every time the pyaqsapi module is +loaded or the key is changed. Without valid credentials, the Data Mart server +will reject any request sent to it. The key used with Data Mart is a key and is +not a password, so the pyaqsapi package does not treat the key as a password; +this means that the key is stored in plain text and there are no attempts to +encrypt Data Mart credentials as would be done for a username and password +combination. The key that is supplied to use with Data Mart is not intended for +authentication but only account monitoring. Each time pyaqsapi is loaded and +before using any of it’s functions use the aqs_credentials function to enter in +the user credentials so that pyaqsapi can access the AQS Data Mart server.

+

Both pyaqsapi and RAQSAPI use the US Environmental Protection Agency’s Air +Quality Service DataMart to retrieve data. The same credentials can be used for +access to either project. Note however, that AQS and AQS DataMart are similar +and related data sources, however the credentials used to access AQS are not the +same as those used to access AQS DataMart.

+
+

Note

+

The credentials used to access AQS Data Mart API are not the same as the +credentials used to access AQS. AQS users who do not have access to the +AQS Data Mart will need to create new credentials. However, you may use the +same credentials used in RAQSAPI in pyaqsapi since RAQSAPI ewes the the same +AQS Data Mart API as pyaqsapi.

+
+
+
orphan:
+

+
+
+
+

Usage tips and precautions

+

This section contains suggestions for completing certain data related tasks.

+
    +
  • Determine if or how much data exists for a time-parameter-geography +combination:

    +
    +
      +
    • Retrieve data using the annualdata service.

    • +
    • If no records are returned, we do not have the data.

    • +
    • If records are returned, use the observation count to determine the +temporal and geographic distribution of the data.

    • +
    +
    +
  • +
  • Monthly averages:

    +
    +
      +
    • AQS does not routinely calculate monthly aggregate statistics.

    • +
    • If you need these, you must calculate them yourself.

    • +
    • These can be calculated from the sample data or the daily data without +loss of fidelity.

    • +
    +
    +
  • +
  • Determine a single value for a site with collocated monitors:

    +
    +
      +
    • Many sites will have collocated monitors - monitors collecting the same +parameter at the same time.

    • +
    • The API currently provides only monitor level values. (site-level values +will be added in the future.)

    • +
    • For some criteria pollutants (PM2.5, ozone, lead, and NO2), the +regulations define procedures for defining a single site-level value.

    • +
    • For other pollutants, determining a single site-level value is left to +the investigator.

    • +
    +
    +
  • +
  • Please adhere to the following when using the AQS Data Mart API:

    +
    +
      +
    • +
      Limit the size of queries. The AQS Data Mart contains billions of

      values and you may request more than you intend. If you are unsure of +the amount of data, start small and work your way up. Please limit +queries to 1,000,000 rows of data each. You can use the +“observation count” field on the annualdata service to determine how +much data exists for a time-parameter-geography combination.

      +
      +
      +
    • +
    • +
      Limit the frequency of queries. The AQS Data Mart can process a limited

      load. Please wait for one request to complete before submitting another +and do not make more than 10 requests per minute.

      +
      +
      +
    • +
    • Be advised that RAQSAPI is capable of retrieving results for multiple +pollutants, this can result in the amount of data being returned being +multiplied by the number of pollutants being requested.

    • +
    • Be advised that the AQS Data Mart API limits certain data requests to +one year of data at a time with the exception of the Monitor service. +In order to retrieve multiple years of data for these functions the +RAQSAPI library conveniently sends multiple API requests to the Data Mart +API server, one request for each year, this can result in the amount of +data being returned being multiplied by the number of years of data being +requested.

    • +
    +
    +
  • +
+

The AQS Data Mart administrators may disable accounts without notice for +failure to adhere to these terms (Though they will contact the offending +user via the email address provided)

+
+
orphan:
+

+
+
+
+

Functions Exported by pyaqsapi

+

The pyaqsapi package includes the following submodules which are not +loaded by default:

+
* pyaqsapi.bysite
+* pyaqsapi.bycounty
+* pyaqsapi.bycounty
+* pyaqsapi.bycbsa
+* pyaqsapi.bybox
+* pyaqsapi.byma
+* pyaqsapi.ma
+
+
+

With these submodules loaded the entire list of functions exported by the +pyaqsapi package includes:

+
* pyaqsapi.aqs_cbsas,
+* pyaqsapi.aqs_classes,
+* pyaqsapi.aqs_counties_by_state,
+* pyaqsapi.aqs_credentials,
+* pyaqsapi.aqs_credentials,
+* pyaqsapi.aqs_fields_by_service,
+* pyaqsapi.aqs_fields_by_service,
+* pyaqsapi.aqs_isavailable,
+* pyaqsapi.aqs_isavailable,
+* pyaqsapi.aqs_knownissues,
+* pyaqsapi.aqs_knownissues,
+* pyaqsapi.aqs_mas,
+* pyaqsapi.aqs_parameters_by_class,
+* pyaqsapi.aqs_pqaos,
+* pyaqsapi.aqs_removeheader,
+* pyaqsapi.aqs_revisionhistory,
+* pyaqsapi.aqs_revisionhistory,
+* pyaqsapi.aqs_sampledurations,
+* pyaqsapi.aqs_sign_up,
+* pyaqsapi.aqs_sign_up,
+* pyaqsapi.aqs_sites_by_county,
+* pyaqsapi.aqs_states,
+* pyaqsapi.bybox.annualsummary,
+* pyaqsapi.bybox.dailysummary,
+* pyaqsapi.bybox.helperfunctions,
+* pyaqsapi.bybox.monitors,
+* pyaqsapi.bybox.quarterlysummary,
+* pyaqsapi.bybox.sampledata,
+* pyaqsapi.bycbsa.annualsummary,
+* pyaqsapi.bycbsa.dailysummary,
+* pyaqsapi.bycbsa.helperfunctions,
+* pyaqsapi.bycbsa.monitors,
+* pyaqsapi.bycbsa.quarterlysummary,
+* pyaqsapi.bycbsa.sampledata,
+* pyaqsapi.bycounty.annualsummary,
+* pyaqsapi.bycounty.dailysummary,
+* pyaqsapi.bycounty.helperfunctions,
+* pyaqsapi.bycounty.monitors,
+* pyaqsapi.bycounty.qa_annualperformanceeval,
+* pyaqsapi.bycounty.qa_annualperformanceevaltransaction,
+* pyaqsapi.bycounty.qa_blanks,
+* pyaqsapi.bycounty.qa_collocated_assessments,
+* pyaqsapi.bycounty.qa_flowrateaudit,
+* pyaqsapi.bycounty.qa_flowrateverification,
+* pyaqsapi.bycounty.qa_one_point_qc,
+* pyaqsapi.bycounty.qa_pep_audit,
+* pyaqsapi.bycounty.quarterlysummary,
+* pyaqsapi.bycounty.sampledata,
+* pyaqsapi.bycounty.transactionsample,
+* pyaqsapi.byma.qa_annualpeferomanceeval,
+* pyaqsapi.byma.qa_annualperformanceevaltransaction,
+* pyaqsapi.byma.qa_blanks,
+* pyaqsapi.byma.qa_collocated_assessments,
+* pyaqsapi.byma.qa_flowrateaudit,
+* pyaqsapi.byma.qa_flowrateverification,
+* pyaqsapi.byma.qa_one_point_qc,
+* pyaqsapi.byma.qa_pep_audit,
+* pyaqsapi.byma.transactionsample,
+* pyaqsapi.bypqao.qa_annualperformanceeval,
+* pyaqsapi.bypqao.qa_annualperformanceevaltransaction,
+* pyaqsapi.bypqao.qa_blanks,
+* pyaqsapi.bypqao.qa_collocated_assessments,
+* pyaqsapi.bypqao.qa_flowrateaudit,
+* pyaqsapi.bypqao.qa_flowrateverification,
+* pyaqsapi.bypqao.qa_one_point_qc,
+* pyaqsapi.bypqao.qa_pep_audit,
+* pyaqsapi.bysite.annualsummary,
+* pyaqsapi.bysite.dailysummary,
+* pyaqsapi.bysite.helperfunctions,
+* pyaqsapi.bysite.monitors,
+* pyaqsapi.bysite.qa_annualpeferomanceeval,
+* pyaqsapi.bysite.qa_annualperformanceevaltransaction,
+* pyaqsapi.bysite.qa_blanks,
+* pyaqsapi.bysite.qa_collocated_assessments,
+* pyaqsapi.bysite.qa_flowrateaudit,
+* pyaqsapi.bysite.qa_flowrateverification,
+* pyaqsapi.bysite.qa_one_point_qc,
+* pyaqsapi.bysite.qa_pep_audit,
+* pyaqsapi.bysite.quarterlysummary,
+* pyaqsapi.bysite.sampledata,
+* pyaqsapi.bysite.transactionsample,
+* pyaqsapi.bystate.annualsummary,
+* pyaqsapi.bystate.dailysummary,
+* pyaqsapi.bystate.helperfunctions,
+* pyaqsapi.bystate.monitors,
+* pyaqsapi.bystate.qa_annualperformanceeval,
+* pyaqsapi.bystate.qa_annualperformanceevaltransaction,
+* pyaqsapi.bystate.qa_blanks,
+* pyaqsapi.bystate.qa_collocated_assessments,
+* pyaqsapi.bystate.qa_flowrateaudit,
+* pyaqsapi.bystate.qa_flowrateverification,
+* pyaqsapi.bystate.qa_one_point_qc,
+* pyaqsapi.bystate.qa_pep_audit,
+* pyaqsapi.bystate.quarterlysummary,
+* pyaqsapi.bystate.sampledata,
+* pyaqsapi.bystate.transactionsample
+
+
+

pyaqsapi functions are named according to the service and filter variables that +are available by the AQS Data Mart API. Refer to Air Quality System (AQS) API for full details of the +AQS DataMart API.

+
+
+

Variable descriptions and usage

+

These are all the available variables that can be used with various functions +exported from the pyaqsapi library listed alphabetically. Not all of these +variables are used with every function, and not all of these parameters are +required. See the :ref: pyaqsapi functional families section to +see which parameters are used with each function.

+
    +
  • +
    AQSobject:

    an object of type AQSAPI_V2 that is returned from pyaqsapi +aggregate functions wheen return_header is True.

    +
    +
    +
  • +
  • +
    bdate:

    a date object which represents the begin date of the data selection. +Only data on or after this date will be returned.

    +
    +
    +
  • +
  • +
    cbdate (optional):

    a date object which represents the “beginning date of last change” that +indicates when the data was last updated. cbdate is used to filter data +based on the change date. Only data that changed on or after this +date will be returned. This is an optional variable which defaults to None.

    +
    +
    +
  • +
  • +
    cedate (optional):

    a date object which represents the “end date of last change” that indicates +when the data was last updated. cedate is used to filter data based on the +change date. Only data that changed on or before this date will be +returned. This is an optional variable which defaults to None.

    +
    +
    +
  • +
  • +
    countycode:

    a character object which represents the 3 digit state FIPS code for the +county being requested (with leading zero(s)). Refer to +aqs_counties_by_state() for a table of available county codes for each +state.

    +
    +
    +
  • +
  • +
    duration (optional):

    a character string that represents the parameter duration code that limits +returned data to a specific sample duration. The default value of None +will result in no filtering based on duration code. Valid durations +include actual sample durations and not calculated durations such as 8 hour +CO or O3rolling averages, 3/6 day PM averages or Pb 3 month +rolling averages. Refer to aqs_sampledurations() for a table of all +available duration codes.

    +
    +
    +
  • +
  • +
    edate:

    a date object which represents the end date of the data selection. Only +data on or before this date will be returned.

    +
    +
    +
  • +
  • +
    email:

    a character object which represents the email account that will be used to +register with the AQS API or change an existing user’s key. A verification +email will be sent to the account specified.

    +
    +
    +
  • +
  • +
    key:

    a character object which represents the key used in conjunction with the +username given to connect to AQS Data Mart.

    +
    +
    +
  • +
  • +
    MA_code:

    a character object which represents the 4 digit AQS Monitoring Agency code +(with leading zeroes).

    +
    +
    +
  • +
  • +
    maxlat:

    a character object which represents the maximum latitude of a geographic +box. Decimal latitude with north begin positive. Only data south of this +latitude will be returned.

    +
    +
    +
  • +
  • +
    maxlon:

    a character object which represents the maximum longitude of a +geographic box. Decimal longitude with east being positive. Only +data west of this longitude will be returned. Note that -80 is less +than -70.

    +
    +
    +
  • +
  • +
    minlat:

    a character object which represents the minimum latitude of a +geographic box. Decimal latitude with north being positive. +Only data north of this latitude will be returned.

    +
    +
    +
  • +
  • +
    minlon:

    a character object which represents the minimum longitude of a +geographic box. Decimal longitude with east begin positive. Only +data east of this longitude will be returned.

    +
    +
    +
  • +
  • +
    parameter:

    a character list or single character object which represents the parameter +code of the air pollutant related to the data being requested.

    +
    +
    +
  • +
  • +
    return_Header:

    If False (default) only returns data requested as a pandas DataFrame. If +True returns a AQSAPI_V2 object.

    +
    +
    +
  • +
  • +
    service:

    a string which represents the services provided by the AQS API. For a list +of available services refer to +<https://aqs.epa.gov/aqsweb/documents/data_api.html#services>_ +for the complete listing of services available through the EPA +AQS Datamart API

    +
    +
    +
  • +
  • +
    sitenum:

    a character object which represents the 4 digit site number (with +leading zeros) within the county and state being requested.

    +
    +
    +
  • +
  • +
    stateFIPS:

    a character object which represents the 2 digit state FIPS code +(with leading zero) for the state being requested.

    +
    +
    +
  • +
  • +
    pqao_code:

    a character object which represents the 4 digit AQS Primary Quality +Assurance Organization code (with leading zeroes).

    +
    +
    +
  • +
  • +
    username:

    a character object which represents the email account that will be used to +connect to the AQS API.

    +
    +
    +
  • +
+
+
+

pyaqsapi functional families

+
+

Sign up and credentials

+

The functions included in this family of functions are:

+
* aqs_credentials
+* aqs_sign_up
+
+
+
+
These functions are used to sign up with Data Mart and to store credential

information to use with pyaqsapi. The aqs_sign_up function takes +one parameter:

+
+
+
    +
  • email:

  • +
+

The aqs_credentials function takes two parameters:

+
    +
  • username:

  • +
  • key:

  • +
+
+
+

Data Mart API metadata functions

+

The functions included in this family of functions are:

+
* aqs_isavailable
+* aqs_knownissues
+* aqs_fields_by_service
+* aqs_revisionhistory
+
+
+

These functions return Data Mart meta data

+
+

The aqs_isavailable function takes no parameters and returns a +table which details the status of the AQS API.

+

The aqs_fields_by_service function takes one parameter, service, +which is a character object which represents the services provided by +the AQS API. For a list of available services see +Air Quality System (AQS) API - Services Overview

+

The aqs_knownissues function takes no parameters and Returns a +table of any known issues with system functionality or the data. These are +usually issues that have been identified internally and will require some +time to correct in Data Mart or the API. This function implements a direct +API call to Data Mart and returns data directly from the API. Issues +returned via this function do not include any issues from the pyaqsapi +package.

+

The aqs_revisionhistory function is used to query Data Mart for the +change history to the API.

+
+
+
+

Data Mart API list functions

+

The functions included in this family of functions are:

+
* aqs_cbsas,
+* aqs_classes,
+* aqs_counties_by_state,
+* aqs_fields_by_service,
+* aqs_isavailable,
+* aqs_knownissues,
+* aqs_mas,
+* aqs_parameters_by_class,
+* aqs_pqaos,
+* aqs_revisionhistory,
+* aqs_sampledurations,
+* aqs_sites_by_county,
+* aqs_states
+
+
+
+

List functions return the API status, API options or groupings that can be +used in conjunction with other API calls. By default each function in this +category returns results as a DataTable. If return_header parameter is set +to True a AQSAPI_v2 object is returned instead.

+

aqs_cbsas returns a table of all available Core Based Statistical +Areas (cbsas) and their respective cbsa codes.

+

aqs_states takes no arguments and returns a table of the available +states and their respective state FIPS codes.

+

aqs_sampledurations() +aqs_sampledurations takes no arguments and returns a table of the +available sample duration code used to construct other requests.

+

aqs_classes takes no arguments and returns a table of parameter +classes (groups of parameters, i.e. “criteria” or “all”).

+

aqs_counties_by_state() +aqs_counties_by_state takes one parameter, stateFIPS, which is a two +digit state FIPS code for the state being requested represented as a +character object and returns a table of counties and their +respective FIPS code for the state requested. Use aqs_states to +receive a table of valid state FIPS codes.

+

aqs_sites_by_county takes two parameters, stateFIPS, which is a +two digit state FIPS code for the state being requested and county_code +which is a three digit county FIPS code for the county being requested, +both stateFIPS and county_code should be encoded as a character object. +This function returns a table of all air monitoring sites with the +requested state and county FIPS code combination.

+

aqs_pqaos takes no parameters and returns an AQSAPI_V2 +object containing a table of primary quality assurance +organizations (pqaos).

+

aqs_mas takes no parameters and returns an AQSAPI_V2 +object containing a table of monitoring agencies (MA).

+
+
+
+

Data Mart aggregate functions

+
+

Note

+

AQS Data Mart API restricts the maximum amount of monitoring data to one +full year of data per API call. These functions are able to return multiple +years of data by making repeated calls to the API. Each call to the Data +Mart API will take time to complete. The more years of data being requested +the longer pyaqsapi will take to return the results.

+
+

These functions retrieve aggregated data from the Data Mart API and are +grouped by how each function aggregates the data. There are 5 different +families of related aggregate functions. These families are arranged by how +the Data Mart API groups the returned data, bysite, bycounty, bystate, +by<latitude/longitude bounding box> (bybox) and +by<core based statistical area> (bycbsa). Within each family +of aggregated data functions there are functions that call on the 10 +different services that the Data Mart API provides. All Aggregate +functions return a pandas DataFrame by default. If the return_Header +parameter is set to True an AQSAPI_V2 object is returned instead.

+

These fourteen services are:

+
    +
  1. +
    Monitors:

    Returns operational information about the samplers (monitors) +used to collect the data. Includes identifying information, +operational dates, operating organizations, etc. Functions +using this service contain monitors in the function name.

    +
    +
    +
  2. +
  3. +
    Sample Data:

    Returns sample data - the most fine grain data reported to +EPA. Usually hourly, sometimes 5-minute, 12-hour, etc. +This service is available in several geographic selections +based on geography: site, county, state, cbsa (core based +statistical area, a grouping of counties), or +by latitude/longitude bounding box. Functions using this +service contain sampledata in the function name. +All Sample Data functions accept two additional, optional +parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last +change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be +returned. This is an optional variable which defaults to +None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is +used to filter data based on the change date. Only data +that changed on or before this date will be returned. This +is an optional variable which defaults to None.

      +
      +
      +
    • +
    • +
      duration:

      an optional character string that represents the parameter +duration code that limits returned data to a specific sample +duration. The default value of None results in no filtering +based on duration code. Valid durations include actual sample +durations and not calculated durations such as 8 hour +CO or $O_3$ rolling averages, 3/6 day PM averages or +Pb 3 month rolling averages. Refer to +aqs_sampledurations() for a list of all available +duration codes.

      +
      +
      +
    • +
    +
    +
    +
    +
  4. +
  5. +
    Daily Summary Data:

    Returns data summarized at the daily level. All daily +summaries are calculated on midnight to midnight basis in local time. +Variables returned include date, mean value, maximum value, etc. Functions +using this service contain Dailysummary in the function name. All Daily +Summary Data functions accept two additional parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last change” +that indicates when the data was last updated. cbdate is used to +filter data based on the change date. Only data that changed on or +after this date will be returned. This is an optional variable which +defaults to None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is +used to filter data based on the change date. Only data +that changed on or before this date will be returned. This +is an optional variable which defaults to None.

      +
      +
      +
    • +
    +
    +
    +
    +
  6. +
  7. +
    Annual Summary Data:

    Returns data summarized at the yearly level. Variables include mean value, +maxima, percentiles, etc. Functions using this service contain annualdata +in the function name. All Annual Summary Data functions accept two +additional parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last +change” that indicates when the data was last updated. cbdate +is used to filter data based on the change date. Only data +that changed on or after this date will be returned. This is +an optional variable which defaults to None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is used +to filter data based on the change date. Only data that +changed on or before this date will be returned. This is an +optional variable which defaults to None.

      +
      +
      +
    • +
    +
    +
    +
    +
  8. +
  9. +
    Quarterly Summary Data:

    Returns data summarized at the quarterly level. Variables include mean +value, maxima, percentiles, etc. Functions using this service +contain quarterlydata in the function name. All Annual Summary Data +functions accept two additional parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last change” that +indicates when the data was last updated. cbdate is used to filter +data based on the change date. Only data that changed on or after +this date will be returned. This is an optional variable which +defaults to None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is used +to filter data based on the change date. Only data that +changed on or before this date will be returned. This is an +optional variable which defaults to None.

      +
      +
      +
    • +
    +
    +
    +
    +
  10. +
  11. +
    Quality Assurance - Blanks Data:

    Quality assurance data - blanks samples. Blanks are unexposed sample +collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Functions using this service contain +qa_blanks in the function name.

    +
    +
    +
  12. +
  13. +
    Quality Assurance - Collocated Assessments:

    Quality assurance data - collocated assessments. Collocated assessments +are pairs of samples collected by different samplers at the same time +and place. (These are “operational” samplers, assessments with +independently calibrated samplers are called “audits”.). Functions using +this service contain qa_collocated_assessments in the function name.

    +
    +
    +
  14. +
  15. +
    Quality Assurance - Flow Rate Verifications:

    Quality assurance data - flow rate verifications. Several times per year, +each PM monitor must have it’s (fixed) flow rate verified by an operator +taking a measurement of the flow rate. Functions using this service contain +qa_flowrateverification in the function name.

    +
    +
    +
  16. +
  17. +
    Quality Assurance - Flow Rate Audits:

    Quality assurance data - flow rate audits. At least twice year, each PM +monitor must have it’s flow rate measurement audited by an expert using a +different method than is used for flow rate verifications. Functions using +this service contain qa_flowrateaudit in the function name.

    +
    +
    +
  18. +
  19. +
    Quality Assurance - One Point Quality Control Raw Data:

    Quality assurance data - one point quality control check raw data. +At least every two weeks, certain gaseous monitors must be challenged with +a known concentration to determine monitor performance. Functions using +this service contain qa_one_point_qc in the function name.

    +
    +
    +
  20. +
  21. +
    Quality Assurance - pep Audits:

    Quality assurance data - performance evaluation program (pep) audits. +Pep audits are independent assessments used to estimate total measurement +system bias with a primary quality assurance organization. Functions +using this service contain qa_pep_audit in the function name.

    +
    +
    +
  22. +
  23. +
    Transaction Sample - AQS Submission data in transaction format (RD):

    Transaction sample data - The raw transaction sample data uploaded to AQS +by the agency responsible for data submissions in RD format. Functions +using this service contain transactionsample in the function name. +Transaction sample data is only available aggregated by site, county, +state or monitoring agency.

    +
    +
    +
  24. +
  25. +
    Quality Assurance - Annual Performance Evaluations:

    Quality assurance data - Annual performance evaluations. A performance +evaluation must be conducted on each primary monitor once per year. The +percent differences between known and measured concentrations at several +levels are used to assess the quality of the monitoring data. Functions +using this service contain aqs_qa_annualperformanceeval in the function +name. Annual performance in transaction format are only available +aggregated by site, county, state, monitoring agency, and primary quality +assurance organization. Annual performance evaluations are only available +aggregated by site, county, state, monitoring agency, and primary quality +assurance organization.

    +
    +
    +
  26. +
  27. +
    Quality Assurance - Annual performance Evaluations in transaction

    format (RD): +Quality assurance data - The raw transaction annual performance +evaluations data in RD format. Functions using this service contain +aqs_qa_annualperformanceevaltransaction in the function name. Annual +performance evaluations in transaction format are only available +aggregated by site, county, state, monitoring agency, and primary quality +assurance organization.

    +
    +
    +
  28. +
+
+
+

Data Mart aggregate functions bysite

+

The bysite submodule exports the following functions:

+
* bysite.annualsummary,
+* bysite.dailysummary,
+* bysite.helperfunctions,
+* bysite.monitors,
+* bysite.qa_annualpeferomanceeval,
+* bysite.qa_annualperformanceevaltransaction,
+* bysite.qa_blanks,
+* bysite.qa_collocated_assessments,
+* bysite.qa_flowrateaudit,
+* bysite.qa_flowrateverification,
+* bysite.qa_one_point_qc,
+* bysite.qa_pep_audit,
+* bysite.quarterlysummary,
+* bysite.sampledata,
+* bysite.transactionsample
+
+
+
+
Functions exported by the bysite submodule aggregate data at the site level.

bysite functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • countycode:

  • +
  • sitenum:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata functions and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata functions and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions bycounty

+

The bycounty submodule exports the following functions:

+
* bycounty.annualsummary,
+* bycounty.dailysummary,
+* bycounty.helperfunctions,
+* bycounty.monitors,
+* bycounty.qa_annualperformanceeval,
+* bycounty.qa_annualperformanceevaltransaction,
+* bycounty.qa_blanks,
+* bycounty.qa_collocated_assessments,
+* bycounty.qa_flowrateaudit,
+* bycounty.qa_flowrateverification,
+* bycounty.qa_one_point_qc,
+* bycounty.qa_pep_audit,
+* bycounty.quarterlysummary,
+* bycounty.sampledata,
+* bycounty.transactionsample
+
+
+
+
Functions exported by the bycounty submodule aggregate data at the county

level. All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • countycode:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions bystate

+

The bystate submodule exports the following functions:

+
* bystate.annualsummary,
+* bystate.dailysummary,
+* bystate.helperfunctions,
+* bystate.monitors,
+* bystate.qa_annualperformanceeval,
+* bystate.qa_annualperformanceevaltransaction,
+* bystate.qa_blanks,
+* bystate.qa_collocated_assessments,
+* bystate.qa_flowrateaudit,
+* bystate.qa_flowrateverification,
+* bystate.qa_one_point_qc,
+* bystate.qa_pep_audit,
+* bystate.quarterlysummary,
+* bystate.sampledata,
+* bystate.transactionsample
+
+
+
+
Functions exported by the bystate submodule aggregate data at the state level.

All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • countycode:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions by Monitoring agency (MA)

+

The byma submodule exports the following functions:

+
* byma.qa_annualpeferomanceeval,
+* byma.qa_annualperformanceevaltransaction,
+* byma.qa_blanks,
+* byma.qa_collocated_assessments,
+* byma.qa_flowrateaudit,
+* byma.qa_flowrateverification,
+* byma.qa_one_point_qc,
+* byma.qa_pep_audit,
+* byma.transactionsample
+
+
+
+
Functions in this family of functions aggregate data at the state level.

All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata functions and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
Functions exported by the byma submodule aggregate data at the

Monitoring Agency (MA) level. All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • MA_code:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions by Core Based Statistical Area (cbsa)

+

The bycbsa submodule exports the following functions:

+
* bycbsa.annualsummary,
+* bycbsa.dailysummary,
+* bycbsa.helperfunctions,
+* bycbsa.monitors,
+* bycbsa.quarterlysummary,
+* bycbsa.sampledata
+
+
+
+
Functions exported by the bycbsa submodule aggregate data at the Core Based

Statistical Area (cbsa, as defined by the US Census Bureau) level. +All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • cbsa_code:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions by Primary Quality Assurance Organization (pqao)

+

The bypqao submodule exports the following functions:

+
* bypqao.qa_annualperformanceeval,
+* bypqao.qa_annualperformanceevaltransaction,
+* bypqao.qa_blanks,
+* bypqao.qa_collocated_assessments,
+* bypqao.qa_flowrateaudit,
+* bypqao.qa_flowrateverification,
+* bypqao.qa_one_point_qc,
+* bypqao.qa_pep_audit
+
+
+
+
Functions exported by the bypqao submodule aggregate data at the

Primary Quality Assurance Organization (pqao) level. All functions accept +the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • pqao_code:

  • +
  • return_header (optional): set to False by default.

  • +
+
+
+

Data Mart aggregate functions by latitude/longitude bounding box (bybox)

+

The bybox submodule exports the following functions:

+
* bybox.annualsummary,
+* bybox.dailysummary,
+* bybox.helperfunctions,
+* bybox.monitors,
+* bybox.quarterlysummary,
+* bybox.sampledata
+
+
+
+
Functions exported by the bybox submodule aggregate data by a

latitude/longitude bounding box (bybox) level. All functions accept the +following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • minlat:

  • +
  • minlon:

  • +
  • maxlon:

  • +
  • maxlat:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

pyaqsapi Miscellaneous functions

+

These are miscellaneous functions exported by pyaqsapi.

+

aqs_removeheader is the function that the pyaqsapi library +uses internally to coerce an AQSAPI_V2 object into a pandas DataFrame. +This is useful if the user saves the output from another pyaqsapi function +with return_header = True set but later decides that they want just a +simple pandas DataFrame object. This function takes only one variable:

+
    +
  • AQSobject:

  • +
+
+
orphan:
+

+
+
+
+
+

Troubleshooting

+

Parameters must be supplied exactly as they are specified, for example the +stateFIPS for Alabama is “01”, entering a value of “1” for the stateFIPS +may lead to unexpected results. Do not omit leading zeros in parameters that +expect them.

+
+
orphan:
+

+
+
+
+

About RAQSAPI

+

pyaqsapi is a port of to the +python 3 programming environment. For anyone that is familiar with RAQSAPI, +the pyaqsapi API will feel familiar to you, most of the functions are similar +and the parameters sent to each functions are the same. pyaqsapi aims to have +feature parity with RAQSAPI and neither project will have features that the +other project does not - other than programming language environment or +language preference there is no benefit to using one package over the other.

+
+

pyaqsapi API reference documentation

+ +
+
+

pyaqsapi index

+
    +
  • genindex

  • +
+
+
+

References

+
+
    +
  1. AQS DataMart welcome. August 2018. URL: https://aqs.epa.gov/aqsweb/documents/data_mart_welcome.html.

  2. +
  3. About AQS data. May 2019. Version 1.1. URL: https://aqs.epa.gov/aqsweb/documents/about_aqs_data.html.

  4. +
  5. Pandas DataFrame. January 2024. URL: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html.

  6. +
  7. Clinton Mccrowey. A R extension to retrieve ambient air monitoring data from the United States Environmental Protection Agency's (US EPA) Air Quality System (AQS) DataMart API V2 interface. 2022. URL: https://github.com/USEPA/RAQSAPI.

  8. +
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/EPA_Disclaimer.html b/docs/_build/html/manual/EPA_Disclaimer.html new file mode 100644 index 0000000..4b02bde --- /dev/null +++ b/docs/_build/html/manual/EPA_Disclaimer.html @@ -0,0 +1,136 @@ + + + + + + + + + EPA Disclaimer — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EPA Disclaimer

+
+

Note

+

This software/application was developed by the U.S. Environmental +Protection Agency (USEPA). No warranty expressed or implied is made +regarding the accuracy or utility of the system, nor shall the act of +distribution constitute any such warranty. The USEPA has relinquished +control of the information and no longer has responsibility to protect +the integrity, confidentiality or availability of the information. Any +reference to specific commercial products, processes, or services by +service mark, trademark, manufacturer, or otherwise, does not constitute +or imply their endorsement, recommendation or favoring by the USEPA. The +USEPA seal and logo shall not be used in any manner to imply endorsement +of any commercial product or activity by the USEPA or the United States +Government.

+
+
+
+

AQS DataMart Disclaimer

+
+

Warning

+

US EPA’s AQS Data Mart API V2 is currently in beta phase of development, +the API interface has not been finalized. This means that certain +functionality of the API may change or be removed without notice. As a +result, this package is also currently marked as beta and may also change +to reflect any changes made to the Data Mart API or in respect to +improvements in the design, functionality, quality and documentation of +this package. The authors assume no liability for any problems that may +occur as a result of using this package, the Data Mart service, any +software, service, hardware, or user accounts that may utilize this +package.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/Install_pyaqsapi.html b/docs/_build/html/manual/Install_pyaqsapi.html new file mode 100644 index 0000000..2c77aa0 --- /dev/null +++ b/docs/_build/html/manual/Install_pyaqsapi.html @@ -0,0 +1,120 @@ + + + + + + + + + Install pyaqsapi — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Install pyaqsapi

+

To install pyaqsapi first clone the pyaqsapi repository.

+
git clone https://github.com/USEPA/pyaqsapi.git
+
+
+

Next, in the project’s root directory use pip to install the proper +dependencies that are required to build +and install pyaqsapi.

+
pip install -r requirements.txt
+
+
+

While still in the project’s root directory use setuptools to build and pip +to install the package.

+
python -m build .
+python -m pip install .
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/Introduction.html b/docs/_build/html/manual/Introduction.html new file mode 100644 index 0000000..9599faa --- /dev/null +++ b/docs/_build/html/manual/Introduction.html @@ -0,0 +1,123 @@ + + + + + + + + + Introduction — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Introduction

+

The pyaqsapi package for the python 3 programming environment allows a python 3 +programming environment to connect to and retrieve data from the United States +Environmental Protection Agency’s (US EPA) Air Quality System (AQS) Data Mart +API v2 (Air Quality System) interface directly. +This package enables the data user to omit legacy challenges including coercing +data from a JSON object to a usable python 3 object, retrieving multiple years +of data, formatting API requests, retrieving results, handling credentials, +requesting multiple pollutant data and rate limiting data requests. +All the basic functionality of the API have been implemented that are available +from the AQS API Data Mart server. The library connects to AQS Data Mart API +via Hypertext Transfer Protocol (HTTP) so there is no need to install external +ODBC drivers, configure ODBC connections or deal with the security +vulnerabilities associated with them. Most functions have a parameter, +return_header which by default is set to FALSE. If the user decides to +set return_header to TRUE, then that function will return a python 3 +AQSAPI_V2 object. An AQSAPI_V2 object has instance methods for retrieving the +data requested, header information, and other metadata related to the API call. +After each call to the API a five second stall is invoked to help prevent +overloading the Data Mart API server and to serve as a simple rate limit.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/Load_pyaqsapi.html b/docs/_build/html/manual/Load_pyaqsapi.html new file mode 100644 index 0000000..d6c37b5 --- /dev/null +++ b/docs/_build/html/manual/Load_pyaqsapi.html @@ -0,0 +1,110 @@ + + + + + + + + + Load pyaqsapi — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Load pyaqsapi

+

Like any other python package make sure that you are loading pyaqsapi in the +same virtual environment where pyaqsapi was installed. Load pyaqsapi in the +same any other python package is loaded.

+
import pyaqsapi as aqs
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/RAQSAPI.html b/docs/_build/html/manual/RAQSAPI.html new file mode 100644 index 0000000..7535e53 --- /dev/null +++ b/docs/_build/html/manual/RAQSAPI.html @@ -0,0 +1,111 @@ + + + + + + + + + About RAQSAPI — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

About RAQSAPI

+

pyaqsapi is a port of to the +python 3 programming environment. For anyone that is familiar with RAQSAPI, +the pyaqsapi API will feel familiar to you, most of the functions are similar +and the parameters sent to each functions are the same. pyaqsapi aims to have +feature parity with RAQSAPI and neither project will have features that the +other project does not - other than programming language environment or +language preference there is no benefit to using one package over the other.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/TimelinessofAQSdata.html b/docs/_build/html/manual/TimelinessofAQSdata.html new file mode 100644 index 0000000..60116fe --- /dev/null +++ b/docs/_build/html/manual/TimelinessofAQSdata.html @@ -0,0 +1,109 @@ + + + + + + + + + About the timeliness of AQS Data — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

About the timeliness of AQS Data

+

EPA’s AQS Datamart API, the service that pyaqsapi retrieves data from, does not +host real time (collected now/today) data. If real time data is needed, please +use the AirNow API and direct all questions toward real time data there. +pyaqsapi does not work with AirNow and cannot retrieve real time data. For more +details see section 7.1 of the About AQS Data page .

+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/Troubleshooting.html b/docs/_build/html/manual/Troubleshooting.html new file mode 100644 index 0000000..e7013e6 --- /dev/null +++ b/docs/_build/html/manual/Troubleshooting.html @@ -0,0 +1,108 @@ + + + + + + + + + Troubleshooting — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Troubleshooting

+

Parameters must be supplied exactly as they are specified, for example the +stateFIPS for Alabama is “01”, entering a value of “1” for the stateFIPS +may lead to unexpected results. Do not omit leading zeros in parameters that +expect them.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/Using_pyaqsapi.html b/docs/_build/html/manual/Using_pyaqsapi.html new file mode 100644 index 0000000..7822d7e --- /dev/null +++ b/docs/_build/html/manual/Using_pyaqsapi.html @@ -0,0 +1,152 @@ + + + + + + + + + Using pyaqsapi — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Using pyaqsapi

+

For those who are already familiar with using +RAQSAPI then the pyaqsapi API should feel familiar with a few minor differences +regarding how the data is returned.

+

By default data is returned as a pandas Data Frames . +Exported functions from pyaqsapi have a parameter RETURN_HEADER, by default +this parameter is False. When False functions simply return the requested +data as a pandas Data Frame. If RETURN_HEADER is manually set to True a list of +AQSAPI_V2 python 3 objects are returned. Use the get_data() class method to +retrieve the data and the get_header() class method to retrieve header +information.

+
+
+

Sign up and setting up user credentials with the pyaqsapi library

+

If you have not already done so you will need to sign up with AQS Data Mart +using aqs_sign_up function, this function takes one input, “email,” which +is a python 3 character object, that represents the email address that you want +to use as a user credential to the AQS Data Mart service. After a successful +call to aqs_sign_up an email message will be sent to the email address provided +with a new Data Mart key which will be used as a credential key to access the +Data Mart API. The aqs_sign_up function can also be used to regenerate a new +key for an existing user, to generate a new key simply call the aqs_sign_up +function with the parameter “email” set to an existing account. A new key will +be e-mailed to the account given.

+

The credentials used to access the Data Mart API service are stored in as a +python global variable that needs to be set every time the pyaqsapi module is +loaded or the key is changed. Without valid credentials, the Data Mart server +will reject any request sent to it. The key used with Data Mart is a key and is +not a password, so the pyaqsapi package does not treat the key as a password; +this means that the key is stored in plain text and there are no attempts to +encrypt Data Mart credentials as would be done for a username and password +combination. The key that is supplied to use with Data Mart is not intended for +authentication but only account monitoring. Each time pyaqsapi is loaded and +before using any of it’s functions use the aqs_credentials function to enter in +the user credentials so that pyaqsapi can access the AQS Data Mart server.

+

Both pyaqsapi and RAQSAPI use the US Environmental Protection Agency’s Air +Quality Service DataMart to retrieve data. The same credentials can be used for +access to either project. Note however, that AQS and AQS DataMart are similar +and related data sources, however the credentials used to access AQS are not the +same as those used to access AQS DataMart.

+
+

Note

+

The credentials used to access AQS Data Mart API are not the same as the +credentials used to access AQS. AQS users who do not have access to the +AQS Data Mart will need to create new credentials. However, you may use the +same credentials used in RAQSAPI in pyaqsapi since RAQSAPI ewes the the same +AQS Data Mart API as pyaqsapi.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/pyaqsapiFunctions-Brief.html b/docs/_build/html/manual/pyaqsapiFunctions-Brief.html new file mode 100644 index 0000000..aea4929 --- /dev/null +++ b/docs/_build/html/manual/pyaqsapiFunctions-Brief.html @@ -0,0 +1,157 @@ + + + + + + + + + Data Mart aggregate functions — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Data Mart aggregate functions

+
+

Note

+

AQS Data Mart API restricts the maximum amount of monitoring data to one +full year of data per API call. These functions are able to return multiple +years of data by making repeated calls to the API. Each call to the Data +Mart API will take time to complete. The more years of data being requested +the longer pyaqsapi will take to return the results.

+
+

These functions retrieve aggregated data from the Data Mart API and are grouped +by how each function aggregates the data. There are 7 different families of +related aggregate functions in which the AQS Data Mart API groups data.

+

These seven families are:

+
+
    +
  • by site (aqs.bysite)

  • +
  • by county (aqs.bycounty)

  • +
  • by state (aqs.bystate)

  • +
  • by latitude/longitude bounding box (aqs.bybox)

  • +
  • by monitoring agency (aqs.byma)

  • +
  • by Primary Quality Assurance Organization (aqs.bypqao)

  • +
  • by core based statistical area (as defined by the US census Bureau) +(aqs.bycbsa).

  • +
+
+

Within these families of aggregated data functions there are functions that +call on the 13 different aggregate services that the Data Mart API provides. +Note that not all aggregations are available for each service.

+

These thirteen services are:

+
+
    +
  • Monitors (monitors)

  • +
  • Sample Data (sampledata)

  • +
  • Daily Summary Data (dailydata)

  • +
  • Annual Summary Data (annualdata)

  • +
  • Quality Assurance - Blanks Data (qa_blanks)

  • +
  • Quality Assurance - Collocated Assessments +(qa_collocated_assessments)

  • +
  • Quality Assurance - Flow Rate Verifications (qa_flowrateverification)

  • +
  • Quality Assurance - Flow Rate Audits (aqs_qa_flowrateaudit)

  • +
  • Quality Assurance - One Point Quality Control Raw Data +(qa_one_point_qc)

  • +
  • Quality Assurance - PEP Audits (qa_pep_audit)

  • +
  • Transaction Sample - AQS Submission data in transaction Format (RD) +(transactionsample)

  • +
  • Quality Assurance - Annual Performance Evaluations +(qa_annualperformanceeval)

  • +
  • Quality Assurance - Annual Performance Evaluations in the AQS +Submission transaction format (RD) (qa_annualperformanceevaltransaction)

  • +
+
+

Aggregate functions are named aqs.<aggregation>.<service>() where <service> +is one of the 13 services listed above and <aggregation> is either +“bysite“, ”bycounty“, ”bystate“, ”bybox“, ”bycbsa”, “byma” or “bypqao”.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/pyaqsapiFunctions-Long.html b/docs/_build/html/manual/pyaqsapiFunctions-Long.html new file mode 100644 index 0000000..23ee1db --- /dev/null +++ b/docs/_build/html/manual/pyaqsapiFunctions-Long.html @@ -0,0 +1,1122 @@ + + + + + + + + + Functions Exported by pyaqsapi — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Functions Exported by pyaqsapi

+

The pyaqsapi package includes the following submodules which are not +loaded by default:

+
* pyaqsapi.bysite
+* pyaqsapi.bycounty
+* pyaqsapi.bycounty
+* pyaqsapi.bycbsa
+* pyaqsapi.bybox
+* pyaqsapi.byma
+* pyaqsapi.ma
+
+
+

With these submodules loaded the entire list of functions exported by the +pyaqsapi package includes:

+
* pyaqsapi.aqs_cbsas,
+* pyaqsapi.aqs_classes,
+* pyaqsapi.aqs_counties_by_state,
+* pyaqsapi.aqs_credentials,
+* pyaqsapi.aqs_credentials,
+* pyaqsapi.aqs_fields_by_service,
+* pyaqsapi.aqs_fields_by_service,
+* pyaqsapi.aqs_isavailable,
+* pyaqsapi.aqs_isavailable,
+* pyaqsapi.aqs_knownissues,
+* pyaqsapi.aqs_knownissues,
+* pyaqsapi.aqs_mas,
+* pyaqsapi.aqs_parameters_by_class,
+* pyaqsapi.aqs_pqaos,
+* pyaqsapi.aqs_removeheader,
+* pyaqsapi.aqs_revisionhistory,
+* pyaqsapi.aqs_revisionhistory,
+* pyaqsapi.aqs_sampledurations,
+* pyaqsapi.aqs_sign_up,
+* pyaqsapi.aqs_sign_up,
+* pyaqsapi.aqs_sites_by_county,
+* pyaqsapi.aqs_states,
+* pyaqsapi.bybox.annualsummary,
+* pyaqsapi.bybox.dailysummary,
+* pyaqsapi.bybox.helperfunctions,
+* pyaqsapi.bybox.monitors,
+* pyaqsapi.bybox.quarterlysummary,
+* pyaqsapi.bybox.sampledata,
+* pyaqsapi.bycbsa.annualsummary,
+* pyaqsapi.bycbsa.dailysummary,
+* pyaqsapi.bycbsa.helperfunctions,
+* pyaqsapi.bycbsa.monitors,
+* pyaqsapi.bycbsa.quarterlysummary,
+* pyaqsapi.bycbsa.sampledata,
+* pyaqsapi.bycounty.annualsummary,
+* pyaqsapi.bycounty.dailysummary,
+* pyaqsapi.bycounty.helperfunctions,
+* pyaqsapi.bycounty.monitors,
+* pyaqsapi.bycounty.qa_annualperformanceeval,
+* pyaqsapi.bycounty.qa_annualperformanceevaltransaction,
+* pyaqsapi.bycounty.qa_blanks,
+* pyaqsapi.bycounty.qa_collocated_assessments,
+* pyaqsapi.bycounty.qa_flowrateaudit,
+* pyaqsapi.bycounty.qa_flowrateverification,
+* pyaqsapi.bycounty.qa_one_point_qc,
+* pyaqsapi.bycounty.qa_pep_audit,
+* pyaqsapi.bycounty.quarterlysummary,
+* pyaqsapi.bycounty.sampledata,
+* pyaqsapi.bycounty.transactionsample,
+* pyaqsapi.byma.qa_annualpeferomanceeval,
+* pyaqsapi.byma.qa_annualperformanceevaltransaction,
+* pyaqsapi.byma.qa_blanks,
+* pyaqsapi.byma.qa_collocated_assessments,
+* pyaqsapi.byma.qa_flowrateaudit,
+* pyaqsapi.byma.qa_flowrateverification,
+* pyaqsapi.byma.qa_one_point_qc,
+* pyaqsapi.byma.qa_pep_audit,
+* pyaqsapi.byma.transactionsample,
+* pyaqsapi.bypqao.qa_annualperformanceeval,
+* pyaqsapi.bypqao.qa_annualperformanceevaltransaction,
+* pyaqsapi.bypqao.qa_blanks,
+* pyaqsapi.bypqao.qa_collocated_assessments,
+* pyaqsapi.bypqao.qa_flowrateaudit,
+* pyaqsapi.bypqao.qa_flowrateverification,
+* pyaqsapi.bypqao.qa_one_point_qc,
+* pyaqsapi.bypqao.qa_pep_audit,
+* pyaqsapi.bysite.annualsummary,
+* pyaqsapi.bysite.dailysummary,
+* pyaqsapi.bysite.helperfunctions,
+* pyaqsapi.bysite.monitors,
+* pyaqsapi.bysite.qa_annualpeferomanceeval,
+* pyaqsapi.bysite.qa_annualperformanceevaltransaction,
+* pyaqsapi.bysite.qa_blanks,
+* pyaqsapi.bysite.qa_collocated_assessments,
+* pyaqsapi.bysite.qa_flowrateaudit,
+* pyaqsapi.bysite.qa_flowrateverification,
+* pyaqsapi.bysite.qa_one_point_qc,
+* pyaqsapi.bysite.qa_pep_audit,
+* pyaqsapi.bysite.quarterlysummary,
+* pyaqsapi.bysite.sampledata,
+* pyaqsapi.bysite.transactionsample,
+* pyaqsapi.bystate.annualsummary,
+* pyaqsapi.bystate.dailysummary,
+* pyaqsapi.bystate.helperfunctions,
+* pyaqsapi.bystate.monitors,
+* pyaqsapi.bystate.qa_annualperformanceeval,
+* pyaqsapi.bystate.qa_annualperformanceevaltransaction,
+* pyaqsapi.bystate.qa_blanks,
+* pyaqsapi.bystate.qa_collocated_assessments,
+* pyaqsapi.bystate.qa_flowrateaudit,
+* pyaqsapi.bystate.qa_flowrateverification,
+* pyaqsapi.bystate.qa_one_point_qc,
+* pyaqsapi.bystate.qa_pep_audit,
+* pyaqsapi.bystate.quarterlysummary,
+* pyaqsapi.bystate.sampledata,
+* pyaqsapi.bystate.transactionsample
+
+
+

pyaqsapi functions are named according to the service and filter variables that +are available by the AQS Data Mart API. Refer to Air Quality System (AQS) API for full details of the +AQS DataMart API.

+
+
+

Variable descriptions and usage

+

These are all the available variables that can be used with various functions +exported from the pyaqsapi library listed alphabetically. Not all of these +variables are used with every function, and not all of these parameters are +required. See the :ref: pyaqsapi functional families section to +see which parameters are used with each function.

+
    +
  • +
    AQSobject:

    an object of type AQSAPI_V2 that is returned from pyaqsapi +aggregate functions wheen return_header is True.

    +
    +
    +
  • +
  • +
    bdate:

    a date object which represents the begin date of the data selection. +Only data on or after this date will be returned.

    +
    +
    +
  • +
  • +
    cbdate (optional):

    a date object which represents the “beginning date of last change” that +indicates when the data was last updated. cbdate is used to filter data +based on the change date. Only data that changed on or after this +date will be returned. This is an optional variable which defaults to None.

    +
    +
    +
  • +
  • +
    cedate (optional):

    a date object which represents the “end date of last change” that indicates +when the data was last updated. cedate is used to filter data based on the +change date. Only data that changed on or before this date will be +returned. This is an optional variable which defaults to None.

    +
    +
    +
  • +
  • +
    countycode:

    a character object which represents the 3 digit state FIPS code for the +county being requested (with leading zero(s)). Refer to +aqs_counties_by_state() for a table of available county codes for each +state.

    +
    +
    +
  • +
  • +
    duration (optional):

    a character string that represents the parameter duration code that limits +returned data to a specific sample duration. The default value of None +will result in no filtering based on duration code. Valid durations +include actual sample durations and not calculated durations such as 8 hour +CO or O3rolling averages, 3/6 day PM averages or Pb 3 month +rolling averages. Refer to aqs_sampledurations() for a table of all +available duration codes.

    +
    +
    +
  • +
  • +
    edate:

    a date object which represents the end date of the data selection. Only +data on or before this date will be returned.

    +
    +
    +
  • +
  • +
    email:

    a character object which represents the email account that will be used to +register with the AQS API or change an existing user’s key. A verification +email will be sent to the account specified.

    +
    +
    +
  • +
  • +
    key:

    a character object which represents the key used in conjunction with the +username given to connect to AQS Data Mart.

    +
    +
    +
  • +
  • +
    MA_code:

    a character object which represents the 4 digit AQS Monitoring Agency code +(with leading zeroes).

    +
    +
    +
  • +
  • +
    maxlat:

    a character object which represents the maximum latitude of a geographic +box. Decimal latitude with north begin positive. Only data south of this +latitude will be returned.

    +
    +
    +
  • +
  • +
    maxlon:

    a character object which represents the maximum longitude of a +geographic box. Decimal longitude with east being positive. Only +data west of this longitude will be returned. Note that -80 is less +than -70.

    +
    +
    +
  • +
  • +
    minlat:

    a character object which represents the minimum latitude of a +geographic box. Decimal latitude with north being positive. +Only data north of this latitude will be returned.

    +
    +
    +
  • +
  • +
    minlon:

    a character object which represents the minimum longitude of a +geographic box. Decimal longitude with east begin positive. Only +data east of this longitude will be returned.

    +
    +
    +
  • +
  • +
    parameter:

    a character list or single character object which represents the parameter +code of the air pollutant related to the data being requested.

    +
    +
    +
  • +
  • +
    return_Header:

    If False (default) only returns data requested as a pandas DataFrame. If +True returns a AQSAPI_V2 object.

    +
    +
    +
  • +
  • +
    service:

    a string which represents the services provided by the AQS API. For a list +of available services refer to +<https://aqs.epa.gov/aqsweb/documents/data_api.html#services>_ +for the complete listing of services available through the EPA +AQS Datamart API

    +
    +
    +
  • +
  • +
    sitenum:

    a character object which represents the 4 digit site number (with +leading zeros) within the county and state being requested.

    +
    +
    +
  • +
  • +
    stateFIPS:

    a character object which represents the 2 digit state FIPS code +(with leading zero) for the state being requested.

    +
    +
    +
  • +
  • +
    pqao_code:

    a character object which represents the 4 digit AQS Primary Quality +Assurance Organization code (with leading zeroes).

    +
    +
    +
  • +
  • +
    username:

    a character object which represents the email account that will be used to +connect to the AQS API.

    +
    +
    +
  • +
+
+
+

pyaqsapi functional families

+
+

Sign up and credentials

+

The functions included in this family of functions are:

+
* aqs_credentials
+* aqs_sign_up
+
+
+
+
These functions are used to sign up with Data Mart and to store credential

information to use with pyaqsapi. The aqs_sign_up function takes +one parameter:

+
+
+
    +
  • email:

  • +
+

The aqs_credentials function takes two parameters:

+
    +
  • username:

  • +
  • key:

  • +
+
+
+

Data Mart API metadata functions

+

The functions included in this family of functions are:

+
* aqs_isavailable
+* aqs_knownissues
+* aqs_fields_by_service
+* aqs_revisionhistory
+
+
+

These functions return Data Mart meta data

+
+

The aqs_isavailable function takes no parameters and returns a +table which details the status of the AQS API.

+

The aqs_fields_by_service function takes one parameter, service, +which is a character object which represents the services provided by +the AQS API. For a list of available services see +Air Quality System (AQS) API - Services Overview

+

The aqs_knownissues function takes no parameters and Returns a +table of any known issues with system functionality or the data. These are +usually issues that have been identified internally and will require some +time to correct in Data Mart or the API. This function implements a direct +API call to Data Mart and returns data directly from the API. Issues +returned via this function do not include any issues from the pyaqsapi +package.

+

The aqs_revisionhistory function is used to query Data Mart for the +change history to the API.

+
+
+
+

Data Mart API list functions

+

The functions included in this family of functions are:

+
* aqs_cbsas,
+* aqs_classes,
+* aqs_counties_by_state,
+* aqs_fields_by_service,
+* aqs_isavailable,
+* aqs_knownissues,
+* aqs_mas,
+* aqs_parameters_by_class,
+* aqs_pqaos,
+* aqs_revisionhistory,
+* aqs_sampledurations,
+* aqs_sites_by_county,
+* aqs_states
+
+
+
+

List functions return the API status, API options or groupings that can be +used in conjunction with other API calls. By default each function in this +category returns results as a DataTable. If return_header parameter is set +to True a AQSAPI_v2 object is returned instead.

+

aqs_cbsas returns a table of all available Core Based Statistical +Areas (cbsas) and their respective cbsa codes.

+

aqs_states takes no arguments and returns a table of the available +states and their respective state FIPS codes.

+

aqs_sampledurations() +aqs_sampledurations takes no arguments and returns a table of the +available sample duration code used to construct other requests.

+

aqs_classes takes no arguments and returns a table of parameter +classes (groups of parameters, i.e. “criteria” or “all”).

+

aqs_counties_by_state() +aqs_counties_by_state takes one parameter, stateFIPS, which is a two +digit state FIPS code for the state being requested represented as a +character object and returns a table of counties and their +respective FIPS code for the state requested. Use aqs_states to +receive a table of valid state FIPS codes.

+

aqs_sites_by_county takes two parameters, stateFIPS, which is a +two digit state FIPS code for the state being requested and county_code +which is a three digit county FIPS code for the county being requested, +both stateFIPS and county_code should be encoded as a character object. +This function returns a table of all air monitoring sites with the +requested state and county FIPS code combination.

+

aqs_pqaos takes no parameters and returns an AQSAPI_V2 +object containing a table of primary quality assurance +organizations (pqaos).

+

aqs_mas takes no parameters and returns an AQSAPI_V2 +object containing a table of monitoring agencies (MA).

+
+
+
+

Data Mart aggregate functions

+
+

Note

+

AQS Data Mart API restricts the maximum amount of monitoring data to one +full year of data per API call. These functions are able to return multiple +years of data by making repeated calls to the API. Each call to the Data +Mart API will take time to complete. The more years of data being requested +the longer pyaqsapi will take to return the results.

+
+

These functions retrieve aggregated data from the Data Mart API and are +grouped by how each function aggregates the data. There are 5 different +families of related aggregate functions. These families are arranged by how +the Data Mart API groups the returned data, bysite, bycounty, bystate, +by<latitude/longitude bounding box> (bybox) and +by<core based statistical area> (bycbsa). Within each family +of aggregated data functions there are functions that call on the 10 +different services that the Data Mart API provides. All Aggregate +functions return a pandas DataFrame by default. If the return_Header +parameter is set to True an AQSAPI_V2 object is returned instead.

+

These fourteen services are:

+
    +
  1. +
    Monitors:

    Returns operational information about the samplers (monitors) +used to collect the data. Includes identifying information, +operational dates, operating organizations, etc. Functions +using this service contain monitors in the function name.

    +
    +
    +
  2. +
  3. +
    Sample Data:

    Returns sample data - the most fine grain data reported to +EPA. Usually hourly, sometimes 5-minute, 12-hour, etc. +This service is available in several geographic selections +based on geography: site, county, state, cbsa (core based +statistical area, a grouping of counties), or +by latitude/longitude bounding box. Functions using this +service contain sampledata in the function name. +All Sample Data functions accept two additional, optional +parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last +change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be +returned. This is an optional variable which defaults to +None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is +used to filter data based on the change date. Only data +that changed on or before this date will be returned. This +is an optional variable which defaults to None.

      +
      +
      +
    • +
    • +
      duration:

      an optional character string that represents the parameter +duration code that limits returned data to a specific sample +duration. The default value of None results in no filtering +based on duration code. Valid durations include actual sample +durations and not calculated durations such as 8 hour +CO or $O_3$ rolling averages, 3/6 day PM averages or +Pb 3 month rolling averages. Refer to +aqs_sampledurations() for a list of all available +duration codes.

      +
      +
      +
    • +
    +
    +
    +
    +
  4. +
  5. +
    Daily Summary Data:

    Returns data summarized at the daily level. All daily +summaries are calculated on midnight to midnight basis in local time. +Variables returned include date, mean value, maximum value, etc. Functions +using this service contain Dailysummary in the function name. All Daily +Summary Data functions accept two additional parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last change” +that indicates when the data was last updated. cbdate is used to +filter data based on the change date. Only data that changed on or +after this date will be returned. This is an optional variable which +defaults to None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is +used to filter data based on the change date. Only data +that changed on or before this date will be returned. This +is an optional variable which defaults to None.

      +
      +
      +
    • +
    +
    +
    +
    +
  6. +
  7. +
    Annual Summary Data:

    Returns data summarized at the yearly level. Variables include mean value, +maxima, percentiles, etc. Functions using this service contain annualdata +in the function name. All Annual Summary Data functions accept two +additional parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last +change” that indicates when the data was last updated. cbdate +is used to filter data based on the change date. Only data +that changed on or after this date will be returned. This is +an optional variable which defaults to None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is used +to filter data based on the change date. Only data that +changed on or before this date will be returned. This is an +optional variable which defaults to None.

      +
      +
      +
    • +
    +
    +
    +
    +
  8. +
  9. +
    Quarterly Summary Data:

    Returns data summarized at the quarterly level. Variables include mean +value, maxima, percentiles, etc. Functions using this service +contain quarterlydata in the function name. All Annual Summary Data +functions accept two additional parameters; cbdate and cedate.

    +
    +
      +
    • +
      cbdate:

      a date object which represents a “beginning date of last change” that +indicates when the data was last updated. cbdate is used to filter +data based on the change date. Only data that changed on or after +this date will be returned. This is an optional variable which +defaults to None.

      +
      +
      +
    • +
    • +
      cedate:

      a date object which represents an “end date of last change” +that indicates when the data was last updated. cedate is used +to filter data based on the change date. Only data that +changed on or before this date will be returned. This is an +optional variable which defaults to None.

      +
      +
      +
    • +
    +
    +
    +
    +
  10. +
  11. +
    Quality Assurance - Blanks Data:

    Quality assurance data - blanks samples. Blanks are unexposed sample +collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Functions using this service contain +qa_blanks in the function name.

    +
    +
    +
  12. +
  13. +
    Quality Assurance - Collocated Assessments:

    Quality assurance data - collocated assessments. Collocated assessments +are pairs of samples collected by different samplers at the same time +and place. (These are “operational” samplers, assessments with +independently calibrated samplers are called “audits”.). Functions using +this service contain qa_collocated_assessments in the function name.

    +
    +
    +
  14. +
  15. +
    Quality Assurance - Flow Rate Verifications:

    Quality assurance data - flow rate verifications. Several times per year, +each PM monitor must have it’s (fixed) flow rate verified by an operator +taking a measurement of the flow rate. Functions using this service contain +qa_flowrateverification in the function name.

    +
    +
    +
  16. +
  17. +
    Quality Assurance - Flow Rate Audits:

    Quality assurance data - flow rate audits. At least twice year, each PM +monitor must have it’s flow rate measurement audited by an expert using a +different method than is used for flow rate verifications. Functions using +this service contain qa_flowrateaudit in the function name.

    +
    +
    +
  18. +
  19. +
    Quality Assurance - One Point Quality Control Raw Data:

    Quality assurance data - one point quality control check raw data. +At least every two weeks, certain gaseous monitors must be challenged with +a known concentration to determine monitor performance. Functions using +this service contain qa_one_point_qc in the function name.

    +
    +
    +
  20. +
  21. +
    Quality Assurance - pep Audits:

    Quality assurance data - performance evaluation program (pep) audits. +Pep audits are independent assessments used to estimate total measurement +system bias with a primary quality assurance organization. Functions +using this service contain qa_pep_audit in the function name.

    +
    +
    +
  22. +
  23. +
    Transaction Sample - AQS Submission data in transaction format (RD):

    Transaction sample data - The raw transaction sample data uploaded to AQS +by the agency responsible for data submissions in RD format. Functions +using this service contain transactionsample in the function name. +Transaction sample data is only available aggregated by site, county, +state or monitoring agency.

    +
    +
    +
  24. +
  25. +
    Quality Assurance - Annual Performance Evaluations:

    Quality assurance data - Annual performance evaluations. A performance +evaluation must be conducted on each primary monitor once per year. The +percent differences between known and measured concentrations at several +levels are used to assess the quality of the monitoring data. Functions +using this service contain aqs_qa_annualperformanceeval in the function +name. Annual performance in transaction format are only available +aggregated by site, county, state, monitoring agency, and primary quality +assurance organization. Annual performance evaluations are only available +aggregated by site, county, state, monitoring agency, and primary quality +assurance organization.

    +
    +
    +
  26. +
  27. +
    Quality Assurance - Annual performance Evaluations in transaction

    format (RD): +Quality assurance data - The raw transaction annual performance +evaluations data in RD format. Functions using this service contain +aqs_qa_annualperformanceevaltransaction in the function name. Annual +performance evaluations in transaction format are only available +aggregated by site, county, state, monitoring agency, and primary quality +assurance organization.

    +
    +
    +
  28. +
+
+
+

Data Mart aggregate functions bysite

+

The bysite submodule exports the following functions:

+
* bysite.annualsummary,
+* bysite.dailysummary,
+* bysite.helperfunctions,
+* bysite.monitors,
+* bysite.qa_annualpeferomanceeval,
+* bysite.qa_annualperformanceevaltransaction,
+* bysite.qa_blanks,
+* bysite.qa_collocated_assessments,
+* bysite.qa_flowrateaudit,
+* bysite.qa_flowrateverification,
+* bysite.qa_one_point_qc,
+* bysite.qa_pep_audit,
+* bysite.quarterlysummary,
+* bysite.sampledata,
+* bysite.transactionsample
+
+
+
+
Functions exported by the bysite submodule aggregate data at the site level.

bysite functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • countycode:

  • +
  • sitenum:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata functions and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata functions and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions bycounty

+

The bycounty submodule exports the following functions:

+
* bycounty.annualsummary,
+* bycounty.dailysummary,
+* bycounty.helperfunctions,
+* bycounty.monitors,
+* bycounty.qa_annualperformanceeval,
+* bycounty.qa_annualperformanceevaltransaction,
+* bycounty.qa_blanks,
+* bycounty.qa_collocated_assessments,
+* bycounty.qa_flowrateaudit,
+* bycounty.qa_flowrateverification,
+* bycounty.qa_one_point_qc,
+* bycounty.qa_pep_audit,
+* bycounty.quarterlysummary,
+* bycounty.sampledata,
+* bycounty.transactionsample
+
+
+
+
Functions exported by the bycounty submodule aggregate data at the county

level. All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • countycode:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions bystate

+

The bystate submodule exports the following functions:

+
* bystate.annualsummary,
+* bystate.dailysummary,
+* bystate.helperfunctions,
+* bystate.monitors,
+* bystate.qa_annualperformanceeval,
+* bystate.qa_annualperformanceevaltransaction,
+* bystate.qa_blanks,
+* bystate.qa_collocated_assessments,
+* bystate.qa_flowrateaudit,
+* bystate.qa_flowrateverification,
+* bystate.qa_one_point_qc,
+* bystate.qa_pep_audit,
+* bystate.quarterlysummary,
+* bystate.sampledata,
+* bystate.transactionsample
+
+
+
+
Functions exported by the bystate submodule aggregate data at the state level.

All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • countycode:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions by Monitoring agency (MA)

+

The byma submodule exports the following functions:

+
* byma.qa_annualpeferomanceeval,
+* byma.qa_annualperformanceevaltransaction,
+* byma.qa_blanks,
+* byma.qa_collocated_assessments,
+* byma.qa_flowrateaudit,
+* byma.qa_flowrateverification,
+* byma.qa_one_point_qc,
+* byma.qa_pep_audit,
+* byma.transactionsample
+
+
+
+
Functions in this family of functions aggregate data at the state level.

All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • stateFIPS:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata functions and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
Functions exported by the byma submodule aggregate data at the

Monitoring Agency (MA) level. All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • MA_code:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions by Core Based Statistical Area (cbsa)

+

The bycbsa submodule exports the following functions:

+
* bycbsa.annualsummary,
+* bycbsa.dailysummary,
+* bycbsa.helperfunctions,
+* bycbsa.monitors,
+* bycbsa.quarterlysummary,
+* bycbsa.sampledata
+
+
+
+
Functions exported by the bycbsa submodule aggregate data at the Core Based

Statistical Area (cbsa, as defined by the US Census Bureau) level. +All functions accept the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • cbsa_code:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

Data Mart aggregate functions by Primary Quality Assurance Organization (pqao)

+

The bypqao submodule exports the following functions:

+
* bypqao.qa_annualperformanceeval,
+* bypqao.qa_annualperformanceevaltransaction,
+* bypqao.qa_blanks,
+* bypqao.qa_collocated_assessments,
+* bypqao.qa_flowrateaudit,
+* bypqao.qa_flowrateverification,
+* bypqao.qa_one_point_qc,
+* bypqao.qa_pep_audit
+
+
+
+
Functions exported by the bypqao submodule aggregate data at the

Primary Quality Assurance Organization (pqao) level. All functions accept +the following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • pqao_code:

  • +
  • return_header (optional): set to False by default.

  • +
+
+
+

Data Mart aggregate functions by latitude/longitude bounding box (bybox)

+

The bybox submodule exports the following functions:

+
* bybox.annualsummary,
+* bybox.dailysummary,
+* bybox.helperfunctions,
+* bybox.monitors,
+* bybox.quarterlysummary,
+* bybox.sampledata
+
+
+
+
Functions exported by the bybox submodule aggregate data by a

latitude/longitude bounding box (bybox) level. All functions accept the +following variables:

+
+
+
    +
  • parameter:

  • +
  • bdate:

  • +
  • edate:

  • +
  • minlat:

  • +
  • minlon:

  • +
  • maxlon:

  • +
  • maxlat:

  • +
  • +
    cbdate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    cedate (optional):

    (This parameter is only used in conjunction with sampledata, dailysummary, +annualdata and quarterlysummary functions).

    +
    +
    +
  • +
  • +
    return_header (optional):

    set to False by default.

    +
    +
    +
  • +
  • +
    duration (optional):

    (This parameter is only used in conjunction with sampledata functions).

    +
    +
    +
  • +
+
+
+

pyaqsapi Miscellaneous functions

+

These are miscellaneous functions exported by pyaqsapi.

+

aqs_removeheader is the function that the pyaqsapi library +uses internally to coerce an AQSAPI_V2 object into a pandas DataFrame. +This is useful if the user saves the output from another pyaqsapi function +with return_header = True set but later decides that they want just a +simple pandas DataFrame object. This function takes only one variable:

+
    +
  • AQSobject:

  • +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/manual/pyaqsapiusagetipsandprecautions.html b/docs/_build/html/manual/pyaqsapiusagetipsandprecautions.html new file mode 100644 index 0000000..784d6ae --- /dev/null +++ b/docs/_build/html/manual/pyaqsapiusagetipsandprecautions.html @@ -0,0 +1,176 @@ + + + + + + + + + Usage tips and precautions — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Usage tips and precautions

+

This section contains suggestions for completing certain data related tasks.

+
    +
  • Determine if or how much data exists for a time-parameter-geography +combination:

    +
    +
      +
    • Retrieve data using the annualdata service.

    • +
    • If no records are returned, we do not have the data.

    • +
    • If records are returned, use the observation count to determine the +temporal and geographic distribution of the data.

    • +
    +
    +
  • +
  • Monthly averages:

    +
    +
      +
    • AQS does not routinely calculate monthly aggregate statistics.

    • +
    • If you need these, you must calculate them yourself.

    • +
    • These can be calculated from the sample data or the daily data without +loss of fidelity.

    • +
    +
    +
  • +
  • Determine a single value for a site with collocated monitors:

    +
    +
      +
    • Many sites will have collocated monitors - monitors collecting the same +parameter at the same time.

    • +
    • The API currently provides only monitor level values. (site-level values +will be added in the future.)

    • +
    • For some criteria pollutants (PM2.5, ozone, lead, and NO2), the +regulations define procedures for defining a single site-level value.

    • +
    • For other pollutants, determining a single site-level value is left to +the investigator.

    • +
    +
    +
  • +
  • Please adhere to the following when using the AQS Data Mart API:

    +
    +
      +
    • +
      Limit the size of queries. The AQS Data Mart contains billions of

      values and you may request more than you intend. If you are unsure of +the amount of data, start small and work your way up. Please limit +queries to 1,000,000 rows of data each. You can use the +“observation count” field on the annualdata service to determine how +much data exists for a time-parameter-geography combination.

      +
      +
      +
    • +
    • +
      Limit the frequency of queries. The AQS Data Mart can process a limited

      load. Please wait for one request to complete before submitting another +and do not make more than 10 requests per minute.

      +
      +
      +
    • +
    • Be advised that RAQSAPI is capable of retrieving results for multiple +pollutants, this can result in the amount of data being returned being +multiplied by the number of pollutants being requested.

    • +
    • Be advised that the AQS Data Mart API limits certain data requests to +one year of data at a time with the exception of the Monitor service. +In order to retrieve multiple years of data for these functions the +RAQSAPI library conveniently sends multiple API requests to the Data Mart +API server, one request for each year, this can result in the amount of +data being returned being multiplied by the number of years of data being +requested.

    • +
    +
    +
  • +
+

The AQS Data Mart administrators may disable accounts without notice for +failure to adhere to these terms (Though they will contact the offending +user via the email address provided)

+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/modules.html b/docs/_build/html/modules.html new file mode 100644 index 0000000..c5740a9 --- /dev/null +++ b/docs/_build/html/modules.html @@ -0,0 +1,260 @@ + + + + + + + + + pyaqsapi — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi

+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv new file mode 100644 index 0000000..909c91f Binary files /dev/null and b/docs/_build/html/objects.inv differ diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html new file mode 100644 index 0000000..366e430 --- /dev/null +++ b/docs/_build/html/py-modindex.html @@ -0,0 +1,207 @@ + + + + + + + + Python Module Index — pyaqsapi documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Python Module Index

+ +
+ p +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ p
+ pyaqsapi +
    + pyaqsapi.bybox +
    + pyaqsapi.bybox.bybox +
    + pyaqsapi.bycbsa +
    + pyaqsapi.bycbsa.bycbsa +
    + pyaqsapi.bycounty +
    + pyaqsapi.bycounty.bycounty +
    + pyaqsapi.byma +
    + pyaqsapi.byma.byma +
    + pyaqsapi.bypqao +
    + pyaqsapi.bypqao.bypqao +
    + pyaqsapi.bysite +
    + pyaqsapi.bysite.bysite +
    + pyaqsapi.bystate +
    + pyaqsapi.bystate.bystate +
    + pyaqsapi.helperfunctions +
    + pyaqsapi.listfunctions +
    + pyaqsapi.metadatafunctions +
    + pyaqsapi.setupfunctions +
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.bybox.html b/docs/_build/html/pyaqsapi.bybox.html new file mode 100644 index 0000000..4871392 --- /dev/null +++ b/docs/_build/html/pyaqsapi.bybox.html @@ -0,0 +1,924 @@ + + + + + + + + + pyaqsapi.bybox package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.bybox package

+
+
+pyaqsapi.bybox.annualsummary(parameter: str, bdate: str, edate: str, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of annual data aggregated by latitude/longitude +bounding box (_by_box).

+

Annual summary contains a DataFrame matching the input parameter for the +rectangular area area bounded by minlat, maxlat, minlon, maxlon provided +for bdate - edate time frame. Variables returned include mean value, maxima, +percentiles, and etc.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object) sample data for all monitors
+
within the input latitude/longitude bounding box for a single parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (str)

  • +
  • edate (str)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing ozone annual summaries in the vicinity of +central Alabama for the first two days of May, 2015.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bybox.annualsummary(parameter=”44201”,

bdate=date(year=2015, month=5, day=1), +edate=date(year=2015, month=5, day=2), +minlat=”33.3”, +maxlat=”33.6”, +minlon=”-87.0”, +maxlon=”-86.7”)

+
+
+
+ +
+
+pyaqsapi.bybox.dailysummary(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of daily summary data aggregated by latitude/longitude +bounding box (_by_box).

+

Daily summary contains a DataFrame matching the input parameter and +stateFIPS provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary data for all
+
monitors within the input latitude/longitude bounding box for a single
+
parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of ozone daily summaries in the vicinity of +central Alabama for the first two days of May 2015:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bybox.dailysummary(parameter="44201",
+                       bdate=date(year=2015, month=5, day=1),
+                       edate=date(year=2015, month=5, day=2),
+                       minlat="33.3",
+                       maxlat="33.6",
+                       minlon="-87.0",
+                       maxlon="-86.7")
+
+
+
+ +
+
+pyaqsapi.bybox.monitors(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False)
+

Return a table of monitors.

+

Return a table of monitors and related metadata sites with the provided +parameter, aggregated by latitude/longitude bounding box (_by_box) for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
pandas DataFrame or an AQSAPI_V2 object
+
Returns a table of monitors from a latitude/longitude bounding
+
box (_by_box).
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
+

Examples

+

Return a DataFrame of all ozone monitors in the vicinity of +central Alabama that operated in 1995.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bybox.monitors(parameter=”44201”,

bdate=date(year=1995, month=1, day=1), +edate=date(year=1995, month=12, day=31), +minlat=”33.3”, +maxlat=”33.6”, +minlon=”-87.0”, +maxlon=”-86.7”)

+
+
+
+ +
+
+pyaqsapi.bybox.quarterlysummary(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: date | None = None, cedate: date | None = None, duration: str | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of quarterly data aggregate by latitude/longitude +bounding box (_by_box).

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS and county_code provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary data for all
+
monitors within the input latitude/longitude bounding box for a single
+
parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • duration (str | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return a DataFrame containing ozone quarterly summaries +in the vicinity of central Alabama for each quarter in +between 2015 - 2017:

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bybox.quarterlysummary(parameter="44201",
+                           bdate=date(year=2015, month=1, day=1),
+                           edate=date(year=2017, month=12, day=31),
+                           minlat="33.3",
+                           maxlat="33.6",
+                           minlon="-87.0",
+                           maxlon="-86.7")
+
+
+
+ +
+
+pyaqsapi.bybox.sampledata(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: date | None = None, cedate: date | None = None, duration: str | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return sample data where the data is aggregated by latitude/longitude +bounding box (_by_box).

+

If return_header is FALSE (default) this function +returns a single DataFrame with the requested data. If return_header is +TRUE returns a list of AQSAPI_v2 objects

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample data for all monitors
+
within the input latitude/longitude bounding box for a single parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • duration (str | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing all ozone samples in the vicinity of +central Alabama between May 1, 2015 - May 2, 2017.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bybox.sampledata(parameter=”44201”,

bdate=date(year=2015, month=5, day=1), +edate=date(year=2015, month=5, day=2), +minlat=”33.3”, +maxlat=”33.6”, +minlon=”-87.0”, +maxlon=”-86.7”)

+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.bybox.bybox module

+

Functions that aggregate data by box. +(by latitude/longitude bounding box).

+
+
+pyaqsapi.bybox.bybox.annualsummary(parameter: str, bdate: str, edate: str, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of annual data aggregated by latitude/longitude +bounding box (_by_box).

+

Annual summary contains a DataFrame matching the input parameter for the +rectangular area area bounded by minlat, maxlat, minlon, maxlon provided +for bdate - edate time frame. Variables returned include mean value, maxima, +percentiles, and etc.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object) sample data for all monitors
+
within the input latitude/longitude bounding box for a single parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (str)

  • +
  • edate (str)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing ozone annual summaries in the vicinity of +central Alabama for the first two days of May, 2015.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bybox.annualsummary(parameter=”44201”,

bdate=date(year=2015, month=5, day=1), +edate=date(year=2015, month=5, day=2), +minlat=”33.3”, +maxlat=”33.6”, +minlon=”-87.0”, +maxlon=”-86.7”)

+
+
+
+ +
+
+pyaqsapi.bybox.bybox.dailysummary(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of daily summary data aggregated by latitude/longitude +bounding box (_by_box).

+

Daily summary contains a DataFrame matching the input parameter and +stateFIPS provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary data for all
+
monitors within the input latitude/longitude bounding box for a single
+
parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of ozone daily summaries in the vicinity of +central Alabama for the first two days of May 2015:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bybox.dailysummary(parameter="44201",
+                       bdate=date(year=2015, month=5, day=1),
+                       edate=date(year=2015, month=5, day=2),
+                       minlat="33.3",
+                       maxlat="33.6",
+                       minlon="-87.0",
+                       maxlon="-86.7")
+
+
+
+ +
+
+pyaqsapi.bybox.bybox.monitors(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False)
+

Return a table of monitors.

+

Return a table of monitors and related metadata sites with the provided +parameter, aggregated by latitude/longitude bounding box (_by_box) for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
pandas DataFrame or an AQSAPI_V2 object
+
Returns a table of monitors from a latitude/longitude bounding
+
box (_by_box).
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
+

Examples

+

Return a DataFrame of all ozone monitors in the vicinity of +central Alabama that operated in 1995.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bybox.monitors(parameter=”44201”,

bdate=date(year=1995, month=1, day=1), +edate=date(year=1995, month=12, day=31), +minlat=”33.3”, +maxlat=”33.6”, +minlon=”-87.0”, +maxlon=”-86.7”)

+
+
+
+ +
+
+pyaqsapi.bybox.bybox.quarterlysummary(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: date | None = None, cedate: date | None = None, duration: str | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of quarterly data aggregate by latitude/longitude +bounding box (_by_box).

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS and county_code provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary data for all
+
monitors within the input latitude/longitude bounding box for a single
+
parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • duration (str | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return a DataFrame containing ozone quarterly summaries +in the vicinity of central Alabama for each quarter in +between 2015 - 2017:

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bybox.quarterlysummary(parameter="44201",
+                           bdate=date(year=2015, month=1, day=1),
+                           edate=date(year=2017, month=12, day=31),
+                           minlat="33.3",
+                           maxlat="33.6",
+                           minlon="-87.0",
+                           maxlon="-86.7")
+
+
+
+ +
+
+pyaqsapi.bybox.bybox.sampledata(parameter: str, bdate: date, edate: date, minlat: str, maxlat: str, minlon: str, maxlon: str, cbdate: date | None = None, cedate: date | None = None, duration: str | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return sample data where the data is aggregated by latitude/longitude +bounding box (_by_box).

+

If return_header is FALSE (default) this function +returns a single DataFrame with the requested data. If return_header is +TRUE returns a list of AQSAPI_v2 objects

+
+
Parameters:
+
+
parametera character string which represents the parameter code of the

air pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
minlata python character object which represents the minimum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data north of this latitude will be returned.

+
+
maxlata python character object which represents the maximum latitude

of a geographic box. Decimal latitude with north begin positive. +Only data south of this latitude will be returned.

+
+
minlona python character object which represents the minimum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data east of this longitude will be returned.

+
+
maxlona python character object which represents the maximum longitude

of a geographic box. Decimal longitude with east begin positive. +Only data west of this longitude will be returned. Note that -80 +is less than -70.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample data for all monitors
+
within the input latitude/longitude bounding box for a single parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • minlat (str)

  • +
  • maxlat (str)

  • +
  • minlon (str)

  • +
  • maxlon (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • duration (str | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing all ozone samples in the vicinity of +central Alabama between May 1, 2015 - May 2, 2017.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bybox.sampledata(parameter=”44201”,

bdate=date(year=2015, month=5, day=1), +edate=date(year=2015, month=5, day=2), +minlat=”33.3”, +maxlat=”33.6”, +minlon=”-87.0”, +maxlon=”-86.7”)

+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.bycbsa.html b/docs/_build/html/pyaqsapi.bycbsa.html new file mode 100644 index 0000000..4e8202e --- /dev/null +++ b/docs/_build/html/pyaqsapi.bycbsa.html @@ -0,0 +1,888 @@ + + + + + + + + + pyaqsapi.bycbsa package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.bycbsa package

+
+
+pyaqsapi.bycbsa.annualsummary(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the Core Based +Statistical Area (cbsa) level.

+

Annual summary contains a DataFrame matching the input parameter and +cbsa_code provided for bdate - edate time frame. Variables returned include +mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): a DataFrame or an
+
AQS_Data Mart_APIv2 object that containing annual summary data for the
+
cbsa_code requested.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of annual summary NO2 +data the for Charlotte-Concord-Gastonia, NC cbsa on +January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.annualsummary(parameter="42602",
+                         bdate=date(year=2017, month=1, day=1),
+                         edate=date(year=2017, month=1, day=1),
+                         cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.dailysummary(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of data aggregated by Core Based Statistical Area +(cbsa).

+

Daily summary contains a DataFrame matching the input parameter and +cbsa_code provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): a DataFrame or an
+
AQS_Data Mart_APIv2 object that containing daily summary data for
+
the cbsa_code requested.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Returns a DataFrame of NO2 daily summary +data the for Charlotte-Concord-Gastonia, NC cbsa on +January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.dailysummary(parameter="42602",
+                        bdate=date(year=2017, month=1, day=1),
+                        edate=date(year=2017, month=1, day=1),
+                        cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.monitors(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+

Return a table of monitors at all sites with the provided parameter, +aggregated by Core Based Statistical Area (CBSA) for bdate - edate +time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors at a site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of NO2 monitors for the +Charlotte-Concord-Gastonia, NC cbsa that were operating +on January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.monitors(parameter="42602",
+                    bdate=date(year=2017, month=1, day=1),
+                    edate=date(year=2017, month=1, day=1),
+                    cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.quarterlysummary(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quarterly summary data aggregated by Core Based Statistical Area +(cbsa_code).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a all monitors with matching parameter and
+
cbsa_code combination within the bdate - edate timeframe.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return a DataFrame of NO2 quarterly summary +data the for Charlotte-Concord-Gastonia, NC cbsa for +each quarter in 2017.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.quarterlysummary(parameter="42602",
+                            bdate=date(year=2017, month=1, day=1),
+                            edate=date(year=2017, month=1, day=1),
+                            cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.sampledata(parameter: str, bdate: date, edate: date, cbsa_code: str, duration: str | None = None, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the Core Based +Statistical Area (cbsa) level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a specific +sample duration. The default value of None results in +no filtering based on duration code.Valid durations include +actual sample durations and not calculated durations such as 8 +hour carbon monoxide or ozone rolling averages, 3/6 day PM +averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample data for all monitors
+
matching cbsa_code for the given parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • duration (str | None)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame which contains NO2 data +for Charlotte-Concord-Gastonia, NC cbsa for +January 1, 2015 - January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.sampledata(parameter="42602",
+                      bdate=date(year=2015, month=1, day=1),
+                      edate=date(year=2017, month=1, day=1),
+                      cbsa_code="16740")
+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.bycbsa.bycbsa module

+

Functions that aggregate data by cbsa +(by Core Based Statistic Area, as defined by the Census Bureau).

+
+
+pyaqsapi.bycbsa.bycbsa.annualsummary(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the Core Based +Statistical Area (cbsa) level.

+

Annual summary contains a DataFrame matching the input parameter and +cbsa_code provided for bdate - edate time frame. Variables returned include +mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): a DataFrame or an
+
AQS_Data Mart_APIv2 object that containing annual summary data for the
+
cbsa_code requested.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of annual summary NO2 +data the for Charlotte-Concord-Gastonia, NC cbsa on +January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.annualsummary(parameter="42602",
+                         bdate=date(year=2017, month=1, day=1),
+                         edate=date(year=2017, month=1, day=1),
+                         cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.bycbsa.dailysummary(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of data aggregated by Core Based Statistical Area +(cbsa).

+

Daily summary contains a DataFrame matching the input parameter and +cbsa_code provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): a DataFrame or an
+
AQS_Data Mart_APIv2 object that containing daily summary data for
+
the cbsa_code requested.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Returns a DataFrame of NO2 daily summary +data the for Charlotte-Concord-Gastonia, NC cbsa on +January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.dailysummary(parameter="42602",
+                        bdate=date(year=2017, month=1, day=1),
+                        edate=date(year=2017, month=1, day=1),
+                        cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.bycbsa.monitors(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+

Return a table of monitors at all sites with the provided parameter, +aggregated by Core Based Statistical Area (CBSA) for bdate - edate +time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors at a site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of NO2 monitors for the +Charlotte-Concord-Gastonia, NC cbsa that were operating +on January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.monitors(parameter="42602",
+                    bdate=date(year=2017, month=1, day=1),
+                    edate=date(year=2017, month=1, day=1),
+                    cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.bycbsa.quarterlysummary(parameter: str, bdate: date, edate: date, cbsa_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quarterly summary data aggregated by Core Based Statistical Area +(cbsa_code).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a all monitors with matching parameter and
+
cbsa_code combination within the bdate - edate timeframe.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return a DataFrame of NO2 quarterly summary +data the for Charlotte-Concord-Gastonia, NC cbsa for +each quarter in 2017.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.quarterlysummary(parameter="42602",
+                            bdate=date(year=2017, month=1, day=1),
+                            edate=date(year=2017, month=1, day=1),
+                            cbsa_code="16740")
+
+
+
+ +
+
+pyaqsapi.bycbsa.bycbsa.sampledata(parameter: str, bdate: date, edate: date, cbsa_code: str, duration: str | None = None, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the Core Based +Statistical Area (cbsa) level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
cbsa_code: a python character object which represents the 5 digit AQS Core

Based Statistical Area code (the same as the census code, with +leading zeros)

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a specific +sample duration. The default value of None results in +no filtering based on duration code.Valid durations include +actual sample durations and not calculated durations such as 8 +hour carbon monoxide or ozone rolling averages, 3/6 day PM +averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample data for all monitors
+
matching cbsa_code for the given parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • cbsa_code (str)

  • +
  • duration (str | None)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame which contains NO2 data +for Charlotte-Concord-Gastonia, NC cbsa for +January 1, 2015 - January 01, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycbsa.sampledata(parameter="42602",
+                      bdate=date(year=2015, month=1, day=1),
+                      edate=date(year=2017, month=1, day=1),
+                      cbsa_code="16740")
+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.bycounty.html b/docs/_build/html/pyaqsapi.bycounty.html new file mode 100644 index 0000000..90b05a7 --- /dev/null +++ b/docs/_build/html/pyaqsapi.bycounty.html @@ -0,0 +1,2495 @@ + + + + + + + + + pyaqsapi.bycounty package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.bycounty package

+
+
+pyaqsapi.bycounty.annualsummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the county level.

+

Annual summary contains a DataFrame matching the input parameter, +stateFIPS and county_code provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): annual summary data for the
+
requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Returns all FRM/FEM PM2.5 data for Wake County, NC between +January 1, 2015 - February 28, 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.annualsummary(parameter="88101",
+                           bdate=date(year=2016,
+                                      month=1,
+                                      day=1),
+                           edate=date(year=2016,
+                                      month=2,
+                                      day=28),
+                           stateFIPS="37",
+                           countycode="183",
+                           return_header=True)
+
+
+
+ +
+
+pyaqsapi.bycounty.dailysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of data aggregated at the county level.

+

Daily summary contains a DataFrame matching the input parameter, stateFIPS +and county_code provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): blank quality assurance data for
+
the requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return an aqs S3 object of daily summary FRM/FEM PM2.5 data +for Wake County, NC between January and February 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.dailysummary(parameter="88101",
+                          bdate=date(year=2016,
+                                     month=1,
+                                     day=1),
+                          edate=date(year=2016,
+                                     month=2,
+                                     day=28),
+                          stateFIPS="37",
+                          countycode="183")
+
+
+
+ +
+
+pyaqsapi.bycounty.monitors(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+

Return a table of monitors and related metadata at sites with the provided +parameter, stateFIPS and county_code for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from
+
the selected stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return an DataFrame containing all SO2 monitors in +Hawaii County, HI that were operating on May 1, 2015:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.monitors(parameter="42401",
+                      bdate=date(year=2015,
+                                 month=5,
+                                 day=1),
+                      edate=date(year=2015,
+                                 month=5,
+                                 day=2),
+                      stateFIPS="15",
+                      countycode="001")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_annualperformanceeval(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quality assurance performance evaluation data - aggregated by +site for a parameter code aggregated by matching input +parameter, stateFIPS and countycode provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data for all monitoring sites for the
+
matching countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data (raw) +for ozone in Baldwin County, AL for 2017 in RD format:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.annualperformanceeval(parameter="44201",
+                                   bdate=date(year=2017,
+                                              month=1,
+                                              day=1),
+                                   edate=date(year=2017,
+                                              month=12,
+                                              day=31),
+                                   stateFIPS="01",
+                                   countycode="003")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by county for a parameter code aggregated by matching +input parameter, countycode and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for all monitoring sites with matching
+
countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data (raw) +for ozone in Baldwin County, AL for 2017 in RD format:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_annualperformanceevaltransaction(parameter="44201",
+                                                 bdate=date(year=2017,
+                                                            month=1,
+                                                            day=1),
+                                                 edate=date(year=2017,
+                                                            month=12,
+                                                            day=31),
+                                                 stateFIPS="01",
+                                                 countycode="003")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_blanks(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of blank quality assurance data. +Blanks are unexposed sample collection devices (e.g., +filters) that are transported with the exposed sample devices +to assess if contamination is occurring during the transport +or handling of the samples. Data is aggregated at the county level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): blank quality assurance data for
+
the requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with PM2.5 blank data for +Colbert County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_blanks(parameter="88101",
+                       bdate=date(year=2018,
+                                  month=1,
+                                  day=1),
+                       edate=date(year=2018,
+                                  month=1,
+                                  day=31),
+                       stateFIPS="01",
+                       countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_collocated_assessments(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of collocated assessment data aggregated by matching input +parameter, stateFIPS and county_code provided for bdate - edate time +frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
collocated assessment data for monitors within a county.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with collocated assessment data +for FRM PM2.5 in Madison County, AL for January 2013:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_collocated_assessments(parameter="88101",
+                                       bdate=date(year=2013,
+                                                  month=1,
+                                                  day=1),
+                                       edate=date(year=2013,
+                                                  month=1,
+                                                  day=31),
+                                       stateFIPS="01",
+                                       countycode="089")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_flowrateaudit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) AQSAPI_V2 | DataFrame
+

Return Quality assurance flowrate audit data.

+

Return a table containing flow rate audit data aggregated by parameter +code, stateFIPS and countycode for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate audit data for +Jefferson County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_flowrateaudit(parameter="88101",
+                              bdate=date(year=2018,
+                                         month=1,
+                                         day=1),
+                              edate=date(year=2018,
+                                         month=1,
+                                         day=31),
+                              stateFIPS="01",
+                              countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_flowrateverification(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing flow rate Verification data for a parameter code +aggregated matching input parameter, stateFIPS, and county_code, provided +for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors within a county.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Returns a DataFrame of flow rate verification data for +Colbert County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_flowrateverification(parameter="88101",
+                                     bdate=date(year=2018,
+                                                month=1,
+                                                day=1),
+                                     edate=date(year=2018,
+                                                month=1,
+                                                day=31),
+                                     stateFIPS="01",
+                                     countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_one_point_qc(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing flow rate audit data aggregated by parameter +code, stateFIPS and countycode for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate audit data for +Jefferson County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_flowrateaudit(parameter="88101",
+                              bdate=date(year=2018,
+                                         month=1,
+                                         day=1),
+                              edate=date(year=2018,
+                                         month=1,
+                                         day=31),
+                              stateFIPS="01",
+                              countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.qa_pep_audit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing quality assurance Performance Evaluation Program +(PEP) audit data aggregated by parameter code, stateFIPS and countycode for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance Performance
+
Evaluation Program (PEP) audit data for the requested stateFIPS and county
+
combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of pep audit data +to be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame with PEP Audit data for FRM +PM2.5 in Madison County, AL for 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_pep_audit(parameter="88101",
+                          bdate=date(year=2017,
+                                     month=1,
+                                     day=1),
+                          edate=date(year=2017,
+                                     month=12,
+                                     day=31),
+                          stateFIPS="01",
+                          countycode="089")
+
+
+
+ +
+
+pyaqsapi.bycounty.quarterlysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of quarterly data aggregated at the county level.

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS and county_code provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a single countycode and stateFIPS combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return a DataFrame containing quarterly summaries for +FRM/FEM PM2.5 data for Wake County, NC for each quarter of 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.quarterlysummary(parameter="88101",
+                              bdate=date(year=2016,
+                                         month=1,
+                                         day=1),
+                              edate=date(year=2017,
+                                         month=2,
+                                         day=28),
+                              stateFIPS="37",
+                              countycode="183")
+
+
+
+ +
+
+pyaqsapi.bycounty.sampledata(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, duration: str | None = None, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the county level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a specific +sample duration. The default value of None results in +no filtering based on duration code.Valid durations include +actual sample durations and not calculated durations such as 8 +hour carbon monoxide or ozone rolling averages, 3/6 day PM +averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance Performance
+
Evaluation Program (PEP) audit data for the requested stateFIPS and county
+
combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • duration (str | None)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return all FRM/FEM PM2.5 data for Wake County, NC between +January 1, 2015 - February 28, 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.sampledata(parameter="88101",
+                        bdate=date(year=2015, month=1, day=1),
+                        edate=date(year=2016, month=2, day=28),
+                        stateFIPS="37",
+                        countycode="183")
+
+
+
+ +
+
+pyaqsapi.bycounty.transactionsample(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return transactionsample data - aggregated by county in the AQS Submission +Transaction Format (RD) sample (raw) data for a parameter code aggregated +by matching input parameter, stateFIPS and countycode provided for +bdate - edate time frame. Includes data both in submitted and +standard units.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample (raw) data
+
in the AQS submission transaction format (RD) corresponding to the inputs
+
provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return all FRM/FEM transaction data for +Wake County, NC on February 23, 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.transactionsample(parameter="88101",
+                               bdate=date(year=2016,
+                                          month=2,
+                                          day=28),
+                               edate=date(year=2016,
+                                          month=2,
+                                          day=28),
+                               stateFIPS="37",
+                               countycode="183")
+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.bycounty.bycounty module

+

Functions that aggregate data by county.

+
+
+pyaqsapi.bycounty.bycounty.annualsummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the county level.

+

Annual summary contains a DataFrame matching the input parameter, +stateFIPS and county_code provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): annual summary data for the
+
requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Returns all FRM/FEM PM2.5 data for Wake County, NC between +January 1, 2015 - February 28, 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.annualsummary(parameter="88101",
+                           bdate=date(year=2016,
+                                      month=1,
+                                      day=1),
+                           edate=date(year=2016,
+                                      month=2,
+                                      day=28),
+                           stateFIPS="37",
+                           countycode="183",
+                           return_header=True)
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.dailysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of data aggregated at the county level.

+

Daily summary contains a DataFrame matching the input parameter, stateFIPS +and county_code provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): blank quality assurance data for
+
the requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return an aqs S3 object of daily summary FRM/FEM PM2.5 data +for Wake County, NC between January and February 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.dailysummary(parameter="88101",
+                          bdate=date(year=2016,
+                                     month=1,
+                                     day=1),
+                          edate=date(year=2016,
+                                     month=2,
+                                     day=28),
+                          stateFIPS="37",
+                          countycode="183")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.monitors(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+

Return a table of monitors and related metadata at sites with the provided +parameter, stateFIPS and county_code for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from
+
the selected stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return an DataFrame containing all SO2 monitors in +Hawaii County, HI that were operating on May 1, 2015:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.monitors(parameter="42401",
+                      bdate=date(year=2015,
+                                 month=5,
+                                 day=1),
+                      edate=date(year=2015,
+                                 month=5,
+                                 day=2),
+                      stateFIPS="15",
+                      countycode="001")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_annualperformanceeval(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quality assurance performance evaluation data - aggregated by +site for a parameter code aggregated by matching input +parameter, stateFIPS and countycode provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data for all monitoring sites for the
+
matching countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data (raw) +for ozone in Baldwin County, AL for 2017 in RD format:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.annualperformanceeval(parameter="44201",
+                                   bdate=date(year=2017,
+                                              month=1,
+                                              day=1),
+                                   edate=date(year=2017,
+                                              month=12,
+                                              day=31),
+                                   stateFIPS="01",
+                                   countycode="003")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by county for a parameter code aggregated by matching +input parameter, countycode and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for all monitoring sites with matching
+
countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data (raw) +for ozone in Baldwin County, AL for 2017 in RD format:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_annualperformanceevaltransaction(parameter="44201",
+                                                 bdate=date(year=2017,
+                                                            month=1,
+                                                            day=1),
+                                                 edate=date(year=2017,
+                                                            month=12,
+                                                            day=31),
+                                                 stateFIPS="01",
+                                                 countycode="003")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_blanks(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of blank quality assurance data. +Blanks are unexposed sample collection devices (e.g., +filters) that are transported with the exposed sample devices +to assess if contamination is occurring during the transport +or handling of the samples. Data is aggregated at the county level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): blank quality assurance data for
+
the requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with PM2.5 blank data for +Colbert County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_blanks(parameter="88101",
+                       bdate=date(year=2018,
+                                  month=1,
+                                  day=1),
+                       edate=date(year=2018,
+                                  month=1,
+                                  day=31),
+                       stateFIPS="01",
+                       countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_collocated_assessments(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of collocated assessment data aggregated by matching input +parameter, stateFIPS and county_code provided for bdate - edate time +frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
collocated assessment data for monitors within a county.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with collocated assessment data +for FRM PM2.5 in Madison County, AL for January 2013:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_collocated_assessments(parameter="88101",
+                                       bdate=date(year=2013,
+                                                  month=1,
+                                                  day=1),
+                                       edate=date(year=2013,
+                                                  month=1,
+                                                  day=31),
+                                       stateFIPS="01",
+                                       countycode="089")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_flowrateaudit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) AQSAPI_V2 | DataFrame
+

Return Quality assurance flowrate audit data.

+

Return a table containing flow rate audit data aggregated by parameter +code, stateFIPS and countycode for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate audit data for +Jefferson County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_flowrateaudit(parameter="88101",
+                              bdate=date(year=2018,
+                                         month=1,
+                                         day=1),
+                              edate=date(year=2018,
+                                         month=1,
+                                         day=31),
+                              stateFIPS="01",
+                              countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_flowrateverification(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing flow rate Verification data for a parameter code +aggregated matching input parameter, stateFIPS, and county_code, provided +for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors within a county.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Returns a DataFrame of flow rate verification data for +Colbert County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_flowrateverification(parameter="88101",
+                                     bdate=date(year=2018,
+                                                month=1,
+                                                day=1),
+                                     edate=date(year=2018,
+                                                month=1,
+                                                day=31),
+                                     stateFIPS="01",
+                                     countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_one_point_qc(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing flow rate audit data aggregated by parameter +code, stateFIPS and countycode for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested stateFIPS and county combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate audit data for +Jefferson County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_flowrateaudit(parameter="88101",
+                              bdate=date(year=2018,
+                                         month=1,
+                                         day=1),
+                              edate=date(year=2018,
+                                         month=1,
+                                         day=31),
+                              stateFIPS="01",
+                              countycode="033")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.qa_pep_audit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing quality assurance Performance Evaluation Program +(PEP) audit data aggregated by parameter code, stateFIPS and countycode for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance Performance
+
Evaluation Program (PEP) audit data for the requested stateFIPS and county
+
combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of pep audit data +to be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame with PEP Audit data for FRM +PM2.5 in Madison County, AL for 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.qa_pep_audit(parameter="88101",
+                          bdate=date(year=2017,
+                                     month=1,
+                                     day=1),
+                          edate=date(year=2017,
+                                     month=12,
+                                     day=31),
+                          stateFIPS="01",
+                          countycode="089")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.quarterlysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of quarterly data aggregated at the county level.

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS and county_code provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a single countycode and stateFIPS combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return a DataFrame containing quarterly summaries for +FRM/FEM PM2.5 data for Wake County, NC for each quarter of 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.quarterlysummary(parameter="88101",
+                              bdate=date(year=2016,
+                                         month=1,
+                                         day=1),
+                              edate=date(year=2017,
+                                         month=2,
+                                         day=28),
+                              stateFIPS="37",
+                              countycode="183")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.sampledata(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, duration: str | None = None, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the county level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a specific +sample duration. The default value of None results in +no filtering based on duration code.Valid durations include +actual sample durations and not calculated durations such as 8 +hour carbon monoxide or ozone rolling averages, 3/6 day PM +averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance Performance
+
Evaluation Program (PEP) audit data for the requested stateFIPS and county
+
combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • duration (str | None)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return all FRM/FEM PM2.5 data for Wake County, NC between +January 1, 2015 - February 28, 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.sampledata(parameter="88101",
+                        bdate=date(year=2015, month=1, day=1),
+                        edate=date(year=2016, month=2, day=28),
+                        stateFIPS="37",
+                        countycode="183")
+
+
+
+ +
+
+pyaqsapi.bycounty.bycounty.transactionsample(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return transactionsample data - aggregated by county in the AQS Submission +Transaction Format (RD) sample (raw) data for a parameter code aggregated +by matching input parameter, stateFIPS and countycode provided for +bdate - edate time frame. Includes data both in submitted and +standard units.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample (raw) data
+
in the AQS submission transaction format (RD) corresponding to the inputs
+
provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return all FRM/FEM transaction data for +Wake County, NC on February 23, 2016:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bycounty.transactionsample(parameter="88101",
+                               bdate=date(year=2016,
+                                          month=2,
+                                          day=28),
+                               edate=date(year=2016,
+                                          month=2,
+                                          day=28),
+                               stateFIPS="37",
+                               countycode="183")
+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.byma.html b/docs/_build/html/pyaqsapi.byma.html new file mode 100644 index 0000000..8d89fde --- /dev/null +++ b/docs/_build/html/pyaqsapi.byma.html @@ -0,0 +1,1431 @@ + + + + + + + + + pyaqsapi.byma package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.byma package

+
+
+pyaqsapi.byma.qa_annualpeferomanceeval(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return quality assurance performance evaluation data - aggregated by +by Monitoring agency (MA) for a parameter code aggregated by matching input +parameter and MA_code for the time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance performance
+
evaluation data. for all monitoring sites for with the MA_code requested
+
for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data for +ozone where the monitoring agency is the Alabama Department of +Environmental Management (MA_code 0013).:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_annualpeferomanceeval(parameter="44201",
+                                  bdate=date(year=2017,
+                                             month=1,
+                                             day=1),
+                                  edate=date(year=2017,
+                                             month=12,
+                                             day=31),
+                                  MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return AQS submissions transaction format (RD) of the annual performance +evaluation data (raw). Includes data pairs for QA - aggregated by +Monitoring agency (MA) for a parameter code aggregated by matching input +parameter and MA_code provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance performance
+
evaluation data in the AQS submissions transaction format (RD)for all sites
+
matching the MA_code requested for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data for +ozone in where the MA is the Alabama Department of Environmental +Management (MA_code 0013) for 2017 in RD format.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_annualperformanceevaltransactionA(parameter="44201",
+                                              bdate=date(year=2017,
+                                                         month=1,
+                                                         day=1),
+                                              edate=date(year=2017,
+                                                         month=12,
+                                                         day=31),
+                                              MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.qa_blanks(parameter: str, bdate: str, edate: str, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Data is aggregated by monitoring +agency code (MA_code).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank sample
+
data for all monitors within the input MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (str)

  • +
  • edate (str)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing PM2.5 blank data in +January 2018 where the Monitoring Agency is the Alabama +Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_blanks(parameter="88101",
+                   bdate=date(year=2018, month=1, day=1),
+                   edate=date(year=2018, month=1, day=31),
+                   MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.qa_collocated_assessments(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table of collocated assessment data aggregated by matching input +parameter, and monitoring agency (MA) code provided for bdate - edate +time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance collocated
+
assessment data for monitors within a monitoring agency.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing collocated assessment +data for FRM PM2.5 January 2013 where the Monitoring Agency is +the Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_collocated_assessments(parameter="88101",
+                                   bdate=date(year=2013,
+                                              month=1,
+                                              day=1),
+                                   edate=date(year=2013,
+                                              month=1,
+                                              day=31),
+                                   MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.qa_flowrateaudit(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return Quality assurance flowrate audit data.

+

Return a table containing flow rate audit data aggregated by parameter +code and monitoring agency code (_by_MA) for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of flow rate audit data +for FRM PM2.5 January 2016 - January 2018 where the Monitoring Agency is +the Jefferson County, AL Department of Health (agency 0550):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_flowrateaudit(parameter="88101",
+                          bdate=date(year=2016, month=1, day=1),
+                          edate=date(year=2018, month=12, day=31),
+                          MA_code="0550")
+
+
+
+ +
+
+pyaqsapi.byma.qa_flowrateverification(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table containing flow rate Verification data for a parameter code +aggregated by matching input parameter, and monitoring agency (MA) code +provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing collocated assessment +data for FRM PM2.5 January 2013 where the Monitoring Agency is +the Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+qqs.byma.qa_flowrateverification(parameter="88101",
+                                 bdate=date(year=2013,
+                                            month=1,
+                                            day=1),
+                                 edate=date(year=2013,
+                                            month=1,
+                                            day=31),
+                                 MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.qa_one_point_qc(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table one point QC check data aggregated by monitoring agency +code (_by_MA).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of ozone One Point QC data +in January 2018 where the Monitoring Agency is the +Massachusetts Department of Environmental Protection (agency 0660):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_one_point_qc(parameter="44201",
+                         bdate=date(year=2018, month=1, day=1),
+                         edate=date(year=2018, month=1, day=31),
+                         MA_code="0660")
+
+
+
+ +
+
+pyaqsapi.byma.qa_pep_audit(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table of Performance Evaluation Program (PEP) audit data +aggregated by monitoring agency code (_by_MA) for the time frame between +bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance PEP audit data
+
for a monitoring agency.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of PEP audit data in June 2017 where the +Monitoring Agency is the Alabama Department +of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_pep_audit(parameter="88101",
+                      bdate=date(year=2017,
+                                 month=6,
+                                 day=1),
+                      edate=date(year=2017,
+                                 month=6,
+                                 day=30),
+                      MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.transactionsample(parameter: str, bdate: str, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return transactionsample data - aggregated by Monitoring agency (MA) in +the AQS Submission Transaction Format (RD) sample (raw) data for a +parameter code aggregated by matching input parameter, and monitoring +agency (MA) code provided for bdate - edate time frame. Includes data both +in submitted and standard units.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample (raw) data in
+
the AQS submission transaction format (RD) corresponding to the inputs
+
provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (str)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of ozone transaction sample data for all monitors +operated by South Coast Air Quality Management District collected +on May 15, 2015:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.transactionsample(parameter="44201",
+                           bdate=date(year=2015, month=5, day=15),
+                           edate=date(year=2015, month=5, day=15),
+                           MA_code="0972")
+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.byma.byma module

+

Functions that aggregate data by ma (By Monitoring Agency).

+
+
+pyaqsapi.byma.byma.qa_annualpeferomanceeval(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return quality assurance performance evaluation data - aggregated by +by Monitoring agency (MA) for a parameter code aggregated by matching input +parameter and MA_code for the time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance performance
+
evaluation data. for all monitoring sites for with the MA_code requested
+
for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data for +ozone where the monitoring agency is the Alabama Department of +Environmental Management (MA_code 0013).:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_annualpeferomanceeval(parameter="44201",
+                                  bdate=date(year=2017,
+                                             month=1,
+                                             day=1),
+                                  edate=date(year=2017,
+                                             month=12,
+                                             day=31),
+                                  MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return AQS submissions transaction format (RD) of the annual performance +evaluation data (raw). Includes data pairs for QA - aggregated by +Monitoring agency (MA) for a parameter code aggregated by matching input +parameter and MA_code provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance performance
+
evaluation data in the AQS submissions transaction format (RD)for all sites
+
matching the MA_code requested for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data for +ozone in where the MA is the Alabama Department of Environmental +Management (MA_code 0013) for 2017 in RD format.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_annualperformanceevaltransactionA(parameter="44201",
+                                              bdate=date(year=2017,
+                                                         month=1,
+                                                         day=1),
+                                              edate=date(year=2017,
+                                                         month=12,
+                                                         day=31),
+                                              MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_blanks(parameter: str, bdate: str, edate: str, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Data is aggregated by monitoring +agency code (MA_code).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank sample
+
data for all monitors within the input MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (str)

  • +
  • edate (str)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing PM2.5 blank data in +January 2018 where the Monitoring Agency is the Alabama +Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_blanks(parameter="88101",
+                   bdate=date(year=2018, month=1, day=1),
+                   edate=date(year=2018, month=1, day=31),
+                   MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_collocated_assessments(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table of collocated assessment data aggregated by matching input +parameter, and monitoring agency (MA) code provided for bdate - edate +time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance collocated
+
assessment data for monitors within a monitoring agency.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing collocated assessment +data for FRM PM2.5 January 2013 where the Monitoring Agency is +the Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_collocated_assessments(parameter="88101",
+                                   bdate=date(year=2013,
+                                              month=1,
+                                              day=1),
+                                   edate=date(year=2013,
+                                              month=1,
+                                              day=31),
+                                   MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_flowrateaudit(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return Quality assurance flowrate audit data.

+

Return a table containing flow rate audit data aggregated by parameter +code and monitoring agency code (_by_MA) for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of flow rate audit data +for FRM PM2.5 January 2016 - January 2018 where the Monitoring Agency is +the Jefferson County, AL Department of Health (agency 0550):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_flowrateaudit(parameter="88101",
+                          bdate=date(year=2016, month=1, day=1),
+                          edate=date(year=2018, month=12, day=31),
+                          MA_code="0550")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_flowrateverification(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table containing flow rate Verification data for a parameter code +aggregated by matching input parameter, and monitoring agency (MA) code +provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing collocated assessment +data for FRM PM2.5 January 2013 where the Monitoring Agency is +the Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+qqs.byma.qa_flowrateverification(parameter="88101",
+                                 bdate=date(year=2013,
+                                            month=1,
+                                            day=1),
+                                 edate=date(year=2013,
+                                            month=1,
+                                            day=31),
+                                 MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_one_point_qc(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table one point QC check data aggregated by monitoring agency +code (_by_MA).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested MA_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of ozone One Point QC data +in January 2018 where the Monitoring Agency is the +Massachusetts Department of Environmental Protection (agency 0660):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_one_point_qc(parameter="44201",
+                         bdate=date(year=2018, month=1, day=1),
+                         edate=date(year=2018, month=1, day=31),
+                         MA_code="0660")
+
+
+
+ +
+
+pyaqsapi.byma.byma.qa_pep_audit(parameter: str, bdate: date, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return a table of Performance Evaluation Program (PEP) audit data +aggregated by monitoring agency code (_by_MA) for the time frame between +bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance PEP audit data
+
for a monitoring agency.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of PEP audit data in June 2017 where the +Monitoring Agency is the Alabama Department +of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.qa_pep_audit(parameter="88101",
+                      bdate=date(year=2017,
+                                 month=6,
+                                 day=1),
+                      edate=date(year=2017,
+                                 month=6,
+                                 day=30),
+                      MA_code="0013")
+
+
+
+ +
+
+pyaqsapi.byma.byma.transactionsample(parameter: str, bdate: str, edate: date, MA_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool = False) DataFrame | AQSAPI_V2
+

Return transactionsample data - aggregated by Monitoring agency (MA) in +the AQS Submission Transaction Format (RD) sample (raw) data for a +parameter code aggregated by matching input parameter, and monitoring +agency (MA) code provided for bdate - edate time frame. Includes data both +in submitted and standard units.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
MA_codea python character object which represents the 4 digit AQS

Monitoring Agency code (with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample (raw) data in
+
the AQS submission transaction format (RD) corresponding to the inputs
+
provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (str)

  • +
  • edate (date)

  • +
  • MA_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of ozone transaction sample data for all monitors +operated by South Coast Air Quality Management District collected +on May 15, 2015:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.byma.transactionsample(parameter="44201",
+                           bdate=date(year=2015, month=5, day=15),
+                           edate=date(year=2015, month=5, day=15),
+                           MA_code="0972")
+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.bypqao.html b/docs/_build/html/pyaqsapi.bypqao.html new file mode 100644 index 0000000..a6d8e69 --- /dev/null +++ b/docs/_build/html/pyaqsapi.bypqao.html @@ -0,0 +1,1306 @@ + + + + + + + + + pyaqsapi.bypqao package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.bypqao package

+
+
+pyaqsapi.bypqao.qa_annualperformanceeval(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return quality assurance performance evaluation data - aggregated by +Primary Quality Assurance Organization (PQAO) for a parameter +code aggregated by matching input parameter and pqao_code for the +time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
pqao_code requested for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data +for ozone where the PQAO is the Alabama Department of +Environmental Management (pqao_code 0013).:

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bypqao.qa_annualperformanceeval(parameter="44201",
+                                    bdate=date(year=2017,
+                                               month=1,
+                                               day=1),
+                                    edate=date(year=2017,
+                                               month=12,
+                                               day=31),
+                                    pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by Primary Quality Assurance Organization (PQAO) +for a parameter code aggregated by matching input parameter and +pqao_code provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
sitenum, countycode and stateFIPS requested for the time frame
+
between bdate and edate
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data for +ozone in where the PQAO is the Alabama Department of +Environmental Management (pqao_code 0013) for 2017 in RD format.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_annualperformanceevaltransaction(parameter="44201",
+                                               bdate=date(year=2017,
+                                                          month=1,
+                                                          day=1),
+                                               edate=date(year=2017,
+                                                          month=12,
+                                                          day=31),
+                                               pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_blanks(parameter: str, bdate: date, edate: date, pqao_code: date, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Data is aggregated by Primary Quality +Assurance Organization (PQAO).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank data
+
for monitors within a pqao.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (date)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return DataFrame of PM2.5 blank data in January 2018 where the PQAO is +the Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.aqs_qa_blanks(parameter="88101",
+                         bdate=date(year=2018, month=1, day=1),
+                         edate=date(year=2018, month=1, day=31),
+                         pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_collocated_assessments(parameter: str, bdate: date, edate: date, pqao_code: date, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Data is aggregated by Primary Quality +Assurance Organization (PQAO).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank data
+
for monitors within a pqao.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (date)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Returns a DataFrame of collocated assessment +data for FRM PM2.5 in January 2013 where the PQAO is the Alabama +Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_collocated_assessments(parameter="88101",
+                                     bdate=date(year=2013,
+                                                moth=1,
+                                                day=1),
+                                     edate=date(year=2013,
+                                                month=1,
+                                                day=31),
+                                     pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_flowrateaudit(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return Quality assurance flowrate audit data.

+

Return quality assurance flow rate audit data aggregated by parameter code +and Primary Quality Assurance Organization (PQAO) code for bdate - edate +time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested pqao_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of flow rate audit data for January +2018 where the PQAO is the Jefferson County, AL Department Of +Health (agency 0550).:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_flowrateaudit(parameter="88101",
+                            bdate=date(year=2018, month=1, day=1),
+                            edate=date(year=2018, month=1, day=31),
+                            pqao_code="0550")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_flowrateverification(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table containing flow rate Verification data for a parameter code +aggregated by matching input parameter, and Primary Quality Assurance +Organization (PQAO) code provided for bdate - edate time.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors within a pqao.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of collocated assessment +data for FRM PM2.5 in January 2013 where the PQAO is the Alabama +Department of Environmental Management (agency 0013):

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bypqao.aqs_qa_flowrateverification(parameter="88101",
+                                       bdate=date(year=2018,
+                                                  month=1,
+                                                  day=1),
+                                       edate=date(year=2018,
+                                                  month=1,
+                                                  day=31),
+                                       pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_one_point_qc(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return Quality assurance data - collocated assessment raw data aggregated +by Primary Quality Assurance Organization (PQAO) code.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): one point qc data within a pqao
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFramee of flow rate audit data for January 2018 where the +PQAO is the Jefferson County, AL Department of Health (agency 0550):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_one_point_qc(parameter="44201",
+                           bdate=date(year=2018,
+                                      month=1,
+                                      day=1),
+                           edate=date(year=2018,
+                                      month=1,
+                                      day=31),
+                           pqao_code="0550")
+
+
+
+ +
+
+pyaqsapi.bypqao.qa_pep_audit(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of Performance Evaluation Program (PEP) audit data +aggregated by Primary Quality Assurance Organization (PQAO) code for the +time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance PEP audit data
+
for a Primary Quality Assurance Organization.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of PEP audit data in June 2017 where the pqao is the +Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_pep_audit(parameter="88101",
+                        bdate=date(year=2017, month=6, day=1),
+                        edate=date(year=2017, month=6, day=30),
+                        pqao_code="0013")
+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.bypqao.bypqao module

+

Functions that aggregate data by pqao +(By Primary Quality Assurance Organization).

+
+
+pyaqsapi.bypqao.bypqao.qa_annualperformanceeval(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return quality assurance performance evaluation data - aggregated by +Primary Quality Assurance Organization (PQAO) for a parameter +code aggregated by matching input parameter and pqao_code for the +time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
pqao_code requested for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data +for ozone where the PQAO is the Alabama Department of +Environmental Management (pqao_code 0013).:

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bypqao.qa_annualperformanceeval(parameter="44201",
+                                    bdate=date(year=2017,
+                                               month=1,
+                                               day=1),
+                                    edate=date(year=2017,
+                                               month=12,
+                                               day=31),
+                                    pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by Primary Quality Assurance Organization (PQAO) +for a parameter code aggregated by matching input parameter and +pqao_code provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
sitenum, countycode and stateFIPS requested for the time frame
+
between bdate and edate
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data for +ozone in where the PQAO is the Alabama Department of +Environmental Management (pqao_code 0013) for 2017 in RD format.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_annualperformanceevaltransaction(parameter="44201",
+                                               bdate=date(year=2017,
+                                                          month=1,
+                                                          day=1),
+                                               edate=date(year=2017,
+                                                          month=12,
+                                                          day=31),
+                                               pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_blanks(parameter: str, bdate: date, edate: date, pqao_code: date, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Data is aggregated by Primary Quality +Assurance Organization (PQAO).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank data
+
for monitors within a pqao.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (date)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return DataFrame of PM2.5 blank data in January 2018 where the PQAO is +the Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.aqs_qa_blanks(parameter="88101",
+                         bdate=date(year=2018, month=1, day=1),
+                         edate=date(year=2018, month=1, day=31),
+                         pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_collocated_assessments(parameter: str, bdate: date, edate: date, pqao_code: date, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during the +transport or handling of the samples. Data is aggregated by Primary Quality +Assurance Organization (PQAO).

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank data
+
for monitors within a pqao.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (date)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Returns a DataFrame of collocated assessment +data for FRM PM2.5 in January 2013 where the PQAO is the Alabama +Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_collocated_assessments(parameter="88101",
+                                     bdate=date(year=2013,
+                                                moth=1,
+                                                day=1),
+                                     edate=date(year=2013,
+                                                month=1,
+                                                day=31),
+                                     pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_flowrateaudit(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return Quality assurance flowrate audit data.

+

Return quality assurance flow rate audit data aggregated by parameter code +and Primary Quality Assurance Organization (PQAO) code for bdate - edate +time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data for the
+
requested pqao_code.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of flow rate audit data for January +2018 where the PQAO is the Jefferson County, AL Department Of +Health (agency 0550).:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_flowrateaudit(parameter="88101",
+                            bdate=date(year=2018, month=1, day=1),
+                            edate=date(year=2018, month=1, day=31),
+                            pqao_code="0550")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_flowrateverification(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table containing flow rate Verification data for a parameter code +aggregated by matching input parameter, and Primary Quality Assurance +Organization (PQAO) code provided for bdate - edate time.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors within a pqao.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of collocated assessment +data for FRM PM2.5 in January 2013 where the PQAO is the Alabama +Department of Environmental Management (agency 0013):

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bypqao.aqs_qa_flowrateverification(parameter="88101",
+                                       bdate=date(year=2018,
+                                                  month=1,
+                                                  day=1),
+                                       edate=date(year=2018,
+                                                  month=1,
+                                                  day=31),
+                                       pqao_code="0013")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_one_point_qc(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return Quality assurance data - collocated assessment raw data aggregated +by Primary Quality Assurance Organization (PQAO) code.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): one point qc data within a pqao
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFramee of flow rate audit data for January 2018 where the +PQAO is the Jefferson County, AL Department of Health (agency 0550):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_one_point_qc(parameter="44201",
+                           bdate=date(year=2018,
+                                      month=1,
+                                      day=1),
+                           edate=date(year=2018,
+                                      month=1,
+                                      day=31),
+                           pqao_code="0550")
+
+
+
+ +
+
+pyaqsapi.bypqao.bypqao.qa_pep_audit(parameter: str, bdate: date, edate: date, pqao_code: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of Performance Evaluation Program (PEP) audit data +aggregated by Primary Quality Assurance Organization (PQAO) code for the +time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
pqao_codea python character object which represents the 4 digit AQS

Primary Quality Assurance Organization code +(with leading zeroes).

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance PEP audit data
+
for a Primary Quality Assurance Organization.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • pqao_code (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of PEP audit data in June 2017 where the pqao is the +Alabama Department of Environmental Management (agency 0013):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bypqao.qa_pep_audit(parameter="88101",
+                        bdate=date(year=2017, month=6, day=1),
+                        edate=date(year=2017, month=6, day=30),
+                        pqao_code="0013")
+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.bysite.html b/docs/_build/html/pyaqsapi.bysite.html new file mode 100644 index 0000000..7272275 --- /dev/null +++ b/docs/_build/html/pyaqsapi.bysite.html @@ -0,0 +1,2925 @@ + + + + + + + + + pyaqsapi.bysite package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.bysite package

+
+
+pyaqsapi.bysite.annualsummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the site level.

+

Annual summary contains a DataFrame matching the input parameter, +stateFIPS, county_code, and sitenum provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): annual summary data for the
+
sitenum, countycode and stateFIPS requested for the time frame between
+
bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of annualsummary data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a table of annual summary ozone data for the Millbrook School +site (#0014) in Wake County, NC for 2017 (Note, for annual data, only +the year portion of the bdate and edate are used and only whole +years of data are returned. For example, bdate = 2017-12-31 and +edate = 2018-01-01 will return full data for 2017 and 2018 ):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.annualsummary(parameter="44201",
+                          bdate=date(year=2017,
+                                     month=6,
+                                     day=18),
+                          edate=date(year=2017,
+                                     month=6,
+                                     day=18),
+                          stateFIPS="37",
+                          countycode="183",
+                          sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.dailysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of data aggregated at the site level.

+

Daily summary contains a DataFrame matching the input parameter, stateFIPS, +county_code, and sitenum provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary data for the
+
sitenum, countycode and stateFIPS requested for the time frame between
+
bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Notes

+

The AQS API only allows for a single year of dailysummary data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of daily summary ozone data for the Millbrook School +site (#0014) in Wake County, NC for June 18, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.dailysummary(parameter="44201",
+                        bdate=date(year=2017,
+                                   month=6,
+                                   day=18),
+                        edate=date(year=2017,
+                                   month=6,
+                                   day=18),
+                        stateFIPS="37",
+                        countycode="183",
+                        sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.monitors(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+
+
Return a table of monitors and related metadata at sites

with the provided parameter, stateFIPS, county_code, and sitenum +for bdate - edate time frame.

+
+
+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from
+
the selected site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

All monitors that operated between the bdate and edate will be returned

+

Examples

+

Return a table of all SO2 monitors at the Hawaii NP site (#0007) in +Hawaii County, HI that were operating between May 1 2015-2019:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.monitors(parameter="42401",
+                    bdate=date(year=2015,
+                               month=5,
+                               day=1,),
+                    edate=date(year=2019,
+                               month=5,
+                               day=2),
+                    stateFIPS="15",
+                    countycode="001",
+                    sitenum="0007")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_annualpeferomanceeval(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quality assurance performance evaluation data - aggregated by +site for a parameter code aggregated by matching input +parameter, sitenum, countycode and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
sitenum, countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quality assurance +Annual Performance Evaluation data to be retrieved at a time. This +function conveniently extracts date information from the bdate and edate +parameters then makes repeated calls to the AQSAPI retrieving a maximum of +one calendar year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return an DataFrame containing annual performance evaluation data for +ozone at the Fairhope site in Baldwin County, AL for 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.annualpeferomanceeval(parameter="44201",
+                                 bdate=date(year=2017,
+                                            month=1,
+                                            day=1),
+                                 edate=date(year=2017,
+                                            month=12,
+                                            day=31),
+                                 stateFIPS="01",
+                                 countycode="003",
+                                 sitenum="0010")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by site for a parameter code aggregated by matching +input parameter, sitenum, countycode and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
sitenum, countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quality assurance +Annual Performance Evaluation transaction data to be retrieved at a time. +This function conveniently extracts date information from the bdate and +edate parameters then makes repeated calls to the AQSAPI retrieving a +maximum of one calendar year of data at a time. Each calendar year of data +requires a separate API call so multiple years of data will require +multiple API calls. As the number of years of data being requested +increases so does the length of time that it will take to retrieve results. +There is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame containing annual performance evaluation data (raw) +for ozone at the Fairhope site in Baldwin County, AL for 2017 +in RD format:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_annualperformanceevaltransaction(parameter = "44201",
+                                               bdate = date(year=2017,
+                                                            month=1,
+                                                            day=1),
+                                               edate = date(year=2017,
+                                                            month=12,
+                                                            day=31),
+                                               stateFIPS = "01",
+                                               countycode = "003",
+                                               sitenum = "0010")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_blanks(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of blank quality assurance data. +Blanks are unexposed sample collection devices (e.g., +filters) that are transported with the exposed sample devices +to assess if contamination is occurring during the transport +or handling of the samples. Data is aggregated at the site level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE
+
returns a AQSAPI_v2 object.
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank
+
sample data for single monitoring site for the sitenum, countycode and
+
stateFIPS requested for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of qa_blank data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a table of PM2.5 blank data for the Muscle Shoals site (#0014) in +Colbert County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_blanks(parameter="44201",
+                     bdate=date(year=2018,
+                                month=1,
+                                day=1),
+                     edate=date(year=2018,
+                                month=1,
+                                day=31),
+                     stateFIPS="01",
+                     countycode="033",
+                     sitenum="1002")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_collocated_assessments(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of collocated assessment data aggregated by matching +input parameter, stateFIPS, county_code, and sitenum provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance collocated
+
assessment data for monitors within a site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of collocated assessments +data to be retrieved at a time. This function conveniently extracts +date information from the bdate and edate parameters then makes +repeated calls to the AQSAPI retrieving a maximum of one calendar +year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of collocated assessment data for FRM PM2.5 at the +Huntsville Old Airport site (#0014) in Madison County, AL +for January 2013:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_collocated_assessments(parameter="88101",
+                                     bdate=date(year=2013,
+                                                month=1,
+                                                day=1,
+                                                ),
+                                     edate=date(year=2013,
+                                                month=1,
+                                                day=31,
+                                                ),
+                                     stateFIPS="01",
+                                     countycode="089",
+                                     sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_flowrateaudit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return Quality assurance flowrate audit data.

+

Return a table containing flow rate audit data aggregated by +parameter code, stateFIPS, countycode and site number for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data
+
for the requested sitenum, countycode and stateFIPS for the time
+
period between bdate - edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of flow rate audit data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Returns a table of all SO2 monitors at the Hawaii NP site (#0007) in +Hawaii County, HI that were operating on May 1, 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_flowrateaudit(parameter="88101",
+                            bdate=date(year=2018,
+                                       month=1,
+                                       day=1),
+                            edate=date(year=2018,
+                                       month=1,
+                                       day=31),
+                            stateFIPS="37",
+                            countycode="183",
+                            sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_flowrateverification(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of containing flow rate verification data aggregated by +matching input parameter, stateFIPS, county_code, and sitenum provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors at a site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of flow rate verifications +data to be retrieved at a time. This function conveniently extracts +date information from the bdate and edate parameters then makes +repeated calls to the AQSAPI retrieving a maximum of one calendar +year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of flow rate verification +data for the Muscle Shoals site (#1002) in Colbert County, AL +for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_flowrateverification(parameter="88101",
+                                   bdate=date(year=2018,
+                                              month=1,
+                                              day=1),
+                                   edate=date(year=2018,
+                                              month=1,
+                                              day=31),
+                                   stateFIPS="25",
+                                   countycode="001",
+                                   sitenum="0002")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_one_point_qc(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of one point QC raw data aggregated +by parameter code, stateFIPS, countycode and site number.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): for the requested sitenum,
+
countycode and stateFIPS for the time period between bdate - edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of flow rate audit data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Returns a One Point QC data for ozone at the Truro National Seashore +site (#0002) in Barnstable County, MA in January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_one_point_qc(parameter="44201",
+                           bdate=date(year=2018,
+                                      month=1,
+                                      day=1),
+                           edate=date(year=2018,
+                                      month=1,
+                                      day=31),
+                           stateFIPS="25",
+                           countycode="001",
+                           sitenum="0002")
+
+
+
+ +
+
+pyaqsapi.bysite.qa_pep_audit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of Performance Evaluation Program (PEP) audit +data aggregated by parameter code, stateFIPS, countycode and +site number for the time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
PEP audit data within a stateFIPS, countycode and sitenum
+
for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of pep audit data +to be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of pep Audit data for FRM PM2.5 +at the Huntsville Old Airport site (#0014) in Madison County, AL +for 2017 - 2019:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_pep_audit(parameter="88101",
+                        bdate=date(year=2017,
+                                   month=1,
+                                   day=1),
+                        edate=date(year=2019,
+                                   month=12,
+                                   day=31),
+                        stateFIPS="01",
+                        countycode="089",
+                        sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.quarterlysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of quarterly data aggregated at the site level.

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS, county_code, and sitenum provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a single countycode and stateFIPS combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return DataFrame containing quarterly summaries for FRM/FEM PM2.5 data +for Millbrook School in Wake County, NC for each quarter of 2016.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.aqs_quarterlysummary(parameter="88101",
+                                bdate=date(year=2016,
+                                           month=1,
+                                           day=1),
+                                edate=date(year=2016,
+                                           month=1,
+                                           day=31),
+                                stateFIPS="37",
+                                countycode="183",
+                                sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.sampledata(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, duration: str | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the site level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample data aggregated at the
+
site level matching the input stateFIPS, countycode and sitenum
+
for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • duration (str | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of sampledata to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of ozone monitoring data for the +Millbrook School site (/#0014) in Wake County, NC for June 18, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.sampledata(parameter="44201",
+                      bdate=date(year=2017,
+                                 month=6,
+                                 day=18),
+                      edate=date(year=2017,
+                                 month=6,
+                                 day=18),
+                      stateFIPS="37",
+                      countycode="183",
+                      sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.transactionsample(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of Returns transactionsample data aggregated by site +in the AQS Submission Transaction Format (RD) sample (raw) data aggregated +by matching input parameter, stateFIPS, county_code, and sitenum provided +for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample
+
(raw) data in the AQS submission transaction format (RD)
+
corresponding to the inputs provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of transaction data +data to be retrieved at a time. This function conveniently extracts +date information from the bdate and edate parameters then makes +repeated calls to the AQSAPI retrieving a maximum of one calendar +year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return all ozone transaction data for the Millbrook School site (#0014) +in Wake County, NC for June 18, 2017:

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bysite.transactionsample(parameter="44201",
+                             bdate=date(year=2017,
+                                        month=6,
+                                        day=18),
+                             edate=date(year=2017,
+                                        month=6,
+                                        day=18,),
+                             stateFIPS="37",
+                             countycode="183",
+                             sitenum="0014")
+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.bysite.bysite module

+

pyaqsapi Functions that aggregate data by site.

+
+
+pyaqsapi.bysite.bysite.annualsummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the site level.

+

Annual summary contains a DataFrame matching the input parameter, +stateFIPS, county_code, and sitenum provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): annual summary data for the
+
sitenum, countycode and stateFIPS requested for the time frame between
+
bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of annualsummary data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a table of annual summary ozone data for the Millbrook School +site (#0014) in Wake County, NC for 2017 (Note, for annual data, only +the year portion of the bdate and edate are used and only whole +years of data are returned. For example, bdate = 2017-12-31 and +edate = 2018-01-01 will return full data for 2017 and 2018 ):

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.annualsummary(parameter="44201",
+                          bdate=date(year=2017,
+                                     month=6,
+                                     day=18),
+                          edate=date(year=2017,
+                                     month=6,
+                                     day=18),
+                          stateFIPS="37",
+                          countycode="183",
+                          sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.dailysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of data aggregated at the site level.

+

Daily summary contains a DataFrame matching the input parameter, stateFIPS, +county_code, and sitenum provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary data for the
+
sitenum, countycode and stateFIPS requested for the time frame between
+
bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Notes

+

The AQS API only allows for a single year of dailysummary data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of daily summary ozone data for the Millbrook School +site (#0014) in Wake County, NC for June 18, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.dailysummary(parameter="44201",
+                        bdate=date(year=2017,
+                                   month=6,
+                                   day=18),
+                        edate=date(year=2017,
+                                   month=6,
+                                   day=18),
+                        stateFIPS="37",
+                        countycode="183",
+                        sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.monitors(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+
+
Return a table of monitors and related metadata at sites

with the provided parameter, stateFIPS, county_code, and sitenum +for bdate - edate time frame.

+
+
+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from
+
the selected site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

All monitors that operated between the bdate and edate will be returned

+

Examples

+

Return a table of all SO2 monitors at the Hawaii NP site (#0007) in +Hawaii County, HI that were operating between May 1 2015-2019:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.monitors(parameter="42401",
+                    bdate=date(year=2015,
+                               month=5,
+                               day=1,),
+                    edate=date(year=2019,
+                               month=5,
+                               day=2),
+                    stateFIPS="15",
+                    countycode="001",
+                    sitenum="0007")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_annualpeferomanceeval(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quality assurance performance evaluation data - aggregated by +site for a parameter code aggregated by matching input +parameter, sitenum, countycode and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
sitenum, countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quality assurance +Annual Performance Evaluation data to be retrieved at a time. This +function conveniently extracts date information from the bdate and edate +parameters then makes repeated calls to the AQSAPI retrieving a maximum of +one calendar year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return an DataFrame containing annual performance evaluation data for +ozone at the Fairhope site in Baldwin County, AL for 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.annualpeferomanceeval(parameter="44201",
+                                 bdate=date(year=2017,
+                                            month=1,
+                                            day=1),
+                                 edate=date(year=2017,
+                                            month=12,
+                                            day=31),
+                                 stateFIPS="01",
+                                 countycode="003",
+                                 sitenum="0010")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by site for a parameter code aggregated by matching +input parameter, sitenum, countycode and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for single monitoring site for the
+
sitenum, countycode and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quality assurance +Annual Performance Evaluation transaction data to be retrieved at a time. +This function conveniently extracts date information from the bdate and +edate parameters then makes repeated calls to the AQSAPI retrieving a +maximum of one calendar year of data at a time. Each calendar year of data +requires a separate API call so multiple years of data will require +multiple API calls. As the number of years of data being requested +increases so does the length of time that it will take to retrieve results. +There is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame containing annual performance evaluation data (raw) +for ozone at the Fairhope site in Baldwin County, AL for 2017 +in RD format:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_annualperformanceevaltransaction(parameter = "44201",
+                                               bdate = date(year=2017,
+                                                            month=1,
+                                                            day=1),
+                                               edate = date(year=2017,
+                                                            month=12,
+                                                            day=31),
+                                               stateFIPS = "01",
+                                               countycode = "003",
+                                               sitenum = "0010")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_blanks(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of blank quality assurance data. +Blanks are unexposed sample collection devices (e.g., +filters) that are transported with the exposed sample devices +to assess if contamination is occurring during the transport +or handling of the samples. Data is aggregated at the site level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE
+
returns a AQSAPI_v2 object.
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank
+
sample data for single monitoring site for the sitenum, countycode and
+
stateFIPS requested for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of qa_blank data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a table of PM2.5 blank data for the Muscle Shoals site (#0014) in +Colbert County, AL for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_blanks(parameter="44201",
+                     bdate=date(year=2018,
+                                month=1,
+                                day=1),
+                     edate=date(year=2018,
+                                month=1,
+                                day=31),
+                     stateFIPS="01",
+                     countycode="033",
+                     sitenum="1002")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_collocated_assessments(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of collocated assessment data aggregated by matching +input parameter, stateFIPS, county_code, and sitenum provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance collocated
+
assessment data for monitors within a site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of collocated assessments +data to be retrieved at a time. This function conveniently extracts +date information from the bdate and edate parameters then makes +repeated calls to the AQSAPI retrieving a maximum of one calendar +year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of collocated assessment data for FRM PM2.5 at the +Huntsville Old Airport site (#0014) in Madison County, AL +for January 2013:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_collocated_assessments(parameter="88101",
+                                     bdate=date(year=2013,
+                                                month=1,
+                                                day=1,
+                                                ),
+                                     edate=date(year=2013,
+                                                month=1,
+                                                day=31,
+                                                ),
+                                     stateFIPS="01",
+                                     countycode="089",
+                                     sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_flowrateaudit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return Quality assurance flowrate audit data.

+

Return a table containing flow rate audit data aggregated by +parameter code, stateFIPS, countycode and site number for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): flow rate audit data
+
for the requested sitenum, countycode and stateFIPS for the time
+
period between bdate - edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of flow rate audit data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Returns a table of all SO2 monitors at the Hawaii NP site (#0007) in +Hawaii County, HI that were operating on May 1, 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_flowrateaudit(parameter="88101",
+                            bdate=date(year=2018,
+                                       month=1,
+                                       day=1),
+                            edate=date(year=2018,
+                                       month=1,
+                                       day=31),
+                            stateFIPS="37",
+                            countycode="183",
+                            sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_flowrateverification(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of containing flow rate verification data aggregated by +matching input parameter, stateFIPS, county_code, and sitenum provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors at a site.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of flow rate verifications +data to be retrieved at a time. This function conveniently extracts +date information from the bdate and edate parameters then makes +repeated calls to the AQSAPI retrieving a maximum of one calendar +year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of flow rate verification +data for the Muscle Shoals site (#1002) in Colbert County, AL +for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_flowrateverification(parameter="88101",
+                                   bdate=date(year=2018,
+                                              month=1,
+                                              day=1),
+                                   edate=date(year=2018,
+                                              month=1,
+                                              day=31),
+                                   stateFIPS="25",
+                                   countycode="001",
+                                   sitenum="0002")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_one_point_qc(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of one point QC raw data aggregated +by parameter code, stateFIPS, countycode and site number.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): for the requested sitenum,
+
countycode and stateFIPS for the time period between bdate - edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of flow rate audit data to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Returns a One Point QC data for ozone at the Truro National Seashore +site (#0002) in Barnstable County, MA in January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_one_point_qc(parameter="44201",
+                           bdate=date(year=2018,
+                                      month=1,
+                                      day=1),
+                           edate=date(year=2018,
+                                      month=1,
+                                      day=31),
+                           stateFIPS="25",
+                           countycode="001",
+                           sitenum="0002")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.qa_pep_audit(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of Performance Evaluation Program (PEP) audit +data aggregated by parameter code, stateFIPS, countycode and +site number for the time frame between bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
PEP audit data within a stateFIPS, countycode and sitenum
+
for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of pep audit data +to be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of pep Audit data for FRM PM2.5 +at the Huntsville Old Airport site (#0014) in Madison County, AL +for 2017 - 2019:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.qa_pep_audit(parameter="88101",
+                        bdate=date(year=2017,
+                                   month=1,
+                                   day=1),
+                        edate=date(year=2019,
+                                   month=12,
+                                   day=31),
+                        stateFIPS="01",
+                        countycode="089",
+                        sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.quarterlysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of quarterly data aggregated at the site level.

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS, county_code, and sitenum provided for bdate - edate time frame. +Variables returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a single countycode and stateFIPS combination.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return DataFrame containing quarterly summaries for FRM/FEM PM2.5 data +for Millbrook School in Wake County, NC for each quarter of 2016.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.aqs_quarterlysummary(parameter="88101",
+                                bdate=date(year=2016,
+                                           month=1,
+                                           day=1),
+                                edate=date(year=2016,
+                                           month=1,
+                                           day=31),
+                                stateFIPS="37",
+                                countycode="183",
+                                sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.sampledata(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, duration: str | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the site level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample data aggregated at the
+
site level matching the input stateFIPS, countycode and sitenum
+
for the time frame between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • duration (str | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of sampledata to +be retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return a DataFrame of ozone monitoring data for the +Millbrook School site (/#0014) in Wake County, NC for June 18, 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bysite.sampledata(parameter="44201",
+                      bdate=date(year=2017,
+                                 month=6,
+                                 day=18),
+                      edate=date(year=2017,
+                                 month=6,
+                                 day=18),
+                      stateFIPS="37",
+                      countycode="183",
+                      sitenum="0014")
+
+
+
+ +
+
+pyaqsapi.bysite.bysite.transactionsample(parameter: str, bdate: date, edate: date, stateFIPS: str, countycode: str, sitenum: str, cbdate: date | None = None, cedate: date | None = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of Returns transactionsample data aggregated by site +in the AQS Submission Transaction Format (RD) sample (raw) data aggregated +by matching input parameter, stateFIPS, county_code, and sitenum provided +for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
sitenuma python character object which represents the 4 digit site

number (with leading zeros) within the county and state +being requested.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample
+
(raw) data in the AQS submission transaction format (RD)
+
corresponding to the inputs provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • sitenum (str)

  • +
  • cbdate (date | None)

  • +
  • cedate (date | None)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of transaction data +data to be retrieved at a time. This function conveniently extracts +date information from the bdate and edate parameters then makes +repeated calls to the AQSAPI retrieving a maximum of one calendar +year of data at a time. Each calendar year of data requires a +separate API call so multiple years of data will require multiple API +calls. As the number of years of data being requested increases so +does the length of time that it will take to retrieve results. There +is also a 5 second wait time inserted between successive API calls to +prevent overloading the API server. This operation has a linear run +time of /(Big O notation: O/(n + 5 seconds/)/).

+

Examples

+

Return all ozone transaction data for the Millbrook School site (#0014) +in Wake County, NC for June 18, 2017:

+
from datetime import date
+import pyaqsapi as aqs
+...
+aqs.bysite.transactionsample(parameter="44201",
+                             bdate=date(year=2017,
+                                        month=6,
+                                        day=18),
+                             edate=date(year=2017,
+                                        month=6,
+                                        day=18,),
+                             stateFIPS="37",
+                             countycode="183",
+                             sitenum="0014")
+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.bystate.html b/docs/_build/html/pyaqsapi.bystate.html new file mode 100644 index 0000000..25232fb --- /dev/null +++ b/docs/_build/html/pyaqsapi.bystate.html @@ -0,0 +1,2227 @@ + + + + + + + + + pyaqsapi.bystate package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi.bystate package

+
+
+pyaqsapi.bystate.annualsummary(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the state level.

+

Annual summary contains a DataFrame matching the input parameter and +stateFIPS provided for bdate - edate time frame. Variables returned include +mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): annual summary data for the
+
stateFIPS requested.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with all benzene samples from +North Carolina collected from May 15th, 1995 - May 15, 1999:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.annualsummary(parameter="45201",
+                          bdate=date(year=1995, month=5, day=15),
+                          edate=date(year=1999, month=5, day=15),
+                          stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.dailysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of data aggregated at the state level.

+

Daily summary contains a DataFrame matching the input parameter and +stateFIPS provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary statistics for the
+
given parameter for a single stateFIPS.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of all benzene daily +summaries from North Carolina collected on May 15th, 1995:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.dailysummary(parameter="45201",
+                         bdate=date(year=1995, month=5, day=15),
+                         edate=date(year=1995, month=5, day=15),
+                         stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.monitors(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+

Return a table of monitors and related metadata at all sites +with the provided parameter and stateFIPS for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from the

selected state.

+
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of SO2 monitors in Hawaii that were operating on +May 01, 2017.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bystate.monitors(parameter=”88101”,

bdate=date(year=2017, month=1, day=1), +edate=date(year=2017, month=12, day=31), +stateFIPS=”01”)

+
+
+
+ +
+
+pyaqsapi.bystate.qa_annualperformanceeval(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quality assurance performance evaluation data - aggregated by +site for a parameter code aggregated by matching input +parameter, and stateFIPS provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data for all monitoring sites for the
+
matching parameter and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation +data for ozone in Alabama for 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_annualperformanceeval(parameter="44201",
+                                     bdate=date(year=2017,
+                                                month=1,
+                                                day=1),
+                                     edate=date(year=2017,
+                                                month=12,
+                                                day=31),
+                                     stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by county for a parameter code aggregated by matching +input parameter and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for all monitoring sites with matching
+
parameter and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data +for ozone in Alabama for 2017 in RD format.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_annualperformanceevaltransaction(parameter="44201",
+                                                bdate=date(year=2017,
+                                                           month=1,
+                                                           day=1),
+                                                edate=date(year=2017,
+                                                           month=12,
+                                                           day=31),
+                                                stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_blanks(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during +the transport or handling of the samples. Data is aggregated at the state +level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank sample
+
data for all monitors within the input stateFIPS.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame which contains PM2.5 blank data +for Alabama for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_blanks(parameter="45201",
+                      bdate=date(year=1995, month=5, day=15),
+                      edate=date(year=1999, month=5, day=15),
+                      stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_collocated_assessments(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of collocated assessment data aggregated by matching input +parameter and stateFIPS provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance collocated
+
assessment data for monitors within a state.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of collocated +assessment data for FRM2.5 for January 2013:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_collocated_assessments(parameter="88101",
+                                      bdate=date(year=2013,
+                                                 month=1,
+                                                 day=1),
+                                      edate=date(year=2013,
+                                                 month=1,
+                                                 day=31),
+                                      stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_flowrateaudit(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return Quality assurance flowrate audit data.

+

Return a table of monitors and related metadata at all sites +with the provided parameter and stateFIPS for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from the

selected state.

+
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate audit +data for Alabama in January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_flowrateaudit(parameter="88101",
+                             bdate=date(year=2018,
+                                        month=1,
+                                        day=1),
+                             edate=date(year=2018,
+                                        month=1,
+                                        day=31),
+                             stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_flowrateverification(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing flow rate Verification data for a parameter code +aggregated matching input parameter, and stateFIPS, provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors within a state.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate verification data for the state of +Alabama for 2017-2019:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_flowrateverification(parameter="88101",
+                                    bdate=date(year=2017,
+                                               month=1,
+                                               day=1),
+                                    edate=date(year=2019,
+                                               month=12,
+                                               day=31),
+                                    stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_one_point_qc(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame or an AQS_Data Mart_APIv2 S3 object containing Quality +assurance data - flow rate audit raw data aggregated by state FIPS for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): one point qc data within the
+
input stateFIPS for bdate - edate time frame..
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of one point QC check +data for ozone in Massachusetts in January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_one_point_qc(parameter="44201",
+                            bdate=date(year=2018, month=1, day=1),
+                            edate=date(year=2018, month=1, day=31),
+                            stateFIPS="25")
+
+
+
+ +
+
+pyaqsapi.bystate.qa_pep_audit(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of Performance Evaluation Program (PEP) audit data +aggregated by parameter code, and stateFIPS for the time frame between +bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance PEP audit data
+
within a state.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of PEP audit data for PM2.5 in Alabama 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_pep_audit(parameter="88101",
+                         bdate=date(year=2017, month=1, day=1),
+                         edate=date(year=2017, month=12, day=31),
+                         stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.quarterlysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of quarterly data aggregated at the state level.

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS a provided for bdate - edate time frame. Variables returned +include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a all monitors with matching parameter and
+
stateFIPS combination within the bdate - edate timeframe.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return an aqs S3 object containing quarterly summaries for +FRM/FEM PM2.5 data for North Carolina for each quarter of 2016-2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.quarterlysummary(parameter="88101",
+                             bdate=date(year=2016,
+                                        month=1,
+                                        day=1),
+                             edate=date(year=2017,
+                                        month=12,
+                                        day=31),
+                             stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.sampledata(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, duration: None | str = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the state level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): containing sample data
+
for all monitors matching stateFIPS for the given parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • duration (None | str)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with all benzene samples from +North Carolina collected from May 15th, 1995 - May 15, 1999:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.sampledata(parameter="45201",
+                       bdate=date(year=1995, month=5, day=15),
+                       edate=date(year=1995, month=5, day=15),
+                       stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.transactionsample(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return transactionsample data - aggregated by state in the AQS Submission +Transaction Format (RD) sample (raw) data for a parameter code aggregated +by matching input parameter, and stateFIPS provided for bdate - edate time +frame. Includes data both in submitted and standard units.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample (raw) data
+
in the AQS submission transaction format (RD) corresponding to the inputs
+
provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing benzene transaction sample data for +North Carolina on May 15, 1995:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.transactionsample(parameter="45201",
+                              bdate=date(year=1995,
+                                         month=5,
+                                         day=15),
+                              edate=date(year=1995,
+                                         month=5,
+                                         day=15),
+                              stateFIPS="37")
+
+
+
+ +
+

Submodules

+
+
+

pyaqsapi.bystate.bystate module

+

Functions that aggregated data by state.

+
+
+pyaqsapi.bystate.bystate.annualsummary(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of annual data aggregated at the state level.

+

Annual summary contains a DataFrame matching the input parameter and +stateFIPS provided for bdate - edate time frame. Variables returned include +mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): annual summary data for the
+
stateFIPS requested.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with all benzene samples from +North Carolina collected from May 15th, 1995 - May 15, 1999:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.annualsummary(parameter="45201",
+                          bdate=date(year=1995, month=5, day=15),
+                          edate=date(year=1999, month=5, day=15),
+                          stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.dailysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of data aggregated at the state level.

+

Daily summary contains a DataFrame matching the input parameter and +stateFIPS provided for bdate - edate time frame. Variables +returned include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): daily summary statistics for the
+
given parameter for a single stateFIPS.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of all benzene daily +summaries from North Carolina collected on May 15th, 1995:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.dailysummary(parameter="45201",
+                         bdate=date(year=1995, month=5, day=15),
+                         edate=date(year=1995, month=5, day=15),
+                         stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.monitors(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of monitors.

+

Return a table of monitors and related metadata at all sites +with the provided parameter and stateFIPS for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from the

selected state.

+
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of SO2 monitors in Hawaii that were operating on +May 01, 2017.

+

import pyaqsapi as aqs +from datetime import date

+
+
aqs.bystate.monitors(parameter=”88101”,

bdate=date(year=2017, month=1, day=1), +edate=date(year=2017, month=12, day=31), +stateFIPS=”01”)

+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_annualperformanceeval(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return quality assurance performance evaluation data - aggregated by +site for a parameter code aggregated by matching input +parameter, and stateFIPS provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data for all monitoring sites for the
+
matching parameter and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation +data for ozone in Alabama for 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_annualperformanceeval(parameter="44201",
+                                     bdate=date(year=2017,
+                                                month=1,
+                                                day=1),
+                                     edate=date(year=2017,
+                                                month=12,
+                                                day=31),
+                                     stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_annualperformanceevaltransaction(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return AQS submissions transaction format (RD) of the annual +performance evaluation data (raw). Includes data pairs for +QA - aggregated by county for a parameter code aggregated by matching +input parameter and stateFIPS provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance
+
performance evaluation data. for all monitoring sites with matching
+
parameter and stateFIPS requested for the time frame
+
between bdate and edate.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing annual performance evaluation data +for ozone in Alabama for 2017 in RD format.:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_annualperformanceevaltransaction(parameter="44201",
+                                                bdate=date(year=2017,
+                                                           month=1,
+                                                           day=1),
+                                                edate=date(year=2017,
+                                                           month=12,
+                                                           day=31),
+                                                stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_blanks(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of blank quality assurance data. Blanks are unexposed +sample collection devices (e.g., filters) that are transported with the +exposed sample devices to assess if contamination is occurring during +the transport or handling of the samples. Data is aggregated at the state +level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance blank sample
+
data for all monitors within the input stateFIPS.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame which contains PM2.5 blank data +for Alabama for January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_blanks(parameter="45201",
+                      bdate=date(year=1995, month=5, day=15),
+                      edate=date(year=1999, month=5, day=15),
+                      stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_collocated_assessments(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of collocated assessment data aggregated by matching input +parameter and stateFIPS provided for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance collocated
+
assessment data for monitors within a state.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of collocated +assessment data for FRM2.5 for January 2013:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_collocated_assessments(parameter="88101",
+                                      bdate=date(year=2013,
+                                                 month=1,
+                                                 day=1),
+                                      edate=date(year=2013,
+                                                 month=1,
+                                                 day=31),
+                                      stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_flowrateaudit(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return Quality assurance flowrate audit data.

+

Return a table of monitors and related metadata at all sites +with the provided parameter and stateFIPS for bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitors from the

selected state.

+
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate audit +data for Alabama in January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_flowrateaudit(parameter="88101",
+                             bdate=date(year=2018,
+                                        month=1,
+                                        day=1),
+                             edate=date(year=2018,
+                                        month=1,
+                                        day=31),
+                             stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_flowrateverification(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table containing flow rate Verification data for a parameter code +aggregated matching input parameter, and stateFIPS, provided for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance flow rate
+
verification data for monitors within a state.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of flow rate verification data for the state of +Alabama for 2017-2019:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_flowrateverification(parameter="88101",
+                                    bdate=date(year=2017,
+                                               month=1,
+                                               day=1),
+                                    edate=date(year=2019,
+                                               month=12,
+                                               day=31),
+                                    stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_one_point_qc(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame or an AQS_Data Mart_APIv2 S3 object containing Quality +assurance data - flow rate audit raw data aggregated by state FIPS for +bdate - edate time frame.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): one point qc data within the
+
input stateFIPS for bdate - edate time frame..
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of one point QC check +data for ozone in Massachusetts in January 2018:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_one_point_qc(parameter="44201",
+                            bdate=date(year=2018, month=1, day=1),
+                            edate=date(year=2018, month=1, day=31),
+                            stateFIPS="25")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.qa_pep_audit(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table of Performance Evaluation Program (PEP) audit data +aggregated by parameter code, and stateFIPS for the time frame between +bdate and edate.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quality assurance PEP audit data
+
within a state.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame of PEP audit data for PM2.5 in Alabama 2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.qa_pep_audit(parameter="88101",
+                         bdate=date(year=2017, month=1, day=1),
+                         edate=date(year=2017, month=12, day=31),
+                         stateFIPS="01")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.quarterlysummary(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a DataFrame of quarterly data aggregated at the state level.

+

Quarterly summary contains a DataFrame matching the input parameter, +stateFIPS a provided for bdate - edate time frame. Variables returned +include mean value, maxima, percentiles, and etc.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): quarterly summary statistics for
+
the given parameter for a all monitors with matching parameter and
+
stateFIPS combination within the bdate - edate timeframe.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Notes

+

The AQS API only allows for a single year of quarterly summary to be +retrieved at a time. This function conveniently extracts date +information from the bdate and edate parameters then makes repeated +calls to the AQSAPI retrieving a maximum of one calendar year of data +at a time. Each calendar year of data requires a separate API call so +multiple years of data will require multiple API calls. As the number +of years of data being requested increases so does the length of time +that it will take to retrieve results. There is also a 5 second wait +time inserted between successive API calls to prevent overloading the +API server. This operation has a linear run time of +/(Big O notation: O/(n + 5 seconds/)/).

+

Also Note that for quarterly data, only the year portion of the bdate +and edate are used and all 4 quarters in the year are returned.

+

Examples

+

Return an aqs S3 object containing quarterly summaries for +FRM/FEM PM2.5 data for North Carolina for each quarter of 2016-2017:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.quarterlysummary(parameter="88101",
+                             bdate=date(year=2016,
+                                        month=1,
+                                        day=1),
+                             edate=date(year=2017,
+                                        month=12,
+                                        day=31),
+                             stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.sampledata(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, duration: None | str = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return sample data where the data is aggregated at the state level.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
durationan optional python character string that represents the

parameter duration code that limits returned data to a +specific sample duration. The default value of None results +in no filtering based on duration code.Valid durations +include actual sample durations and not calculated durations +such as 8 hour carbon monoxide or ozone rolling averages, +3/6 day PM averages or lead 3 month rolling averages. Use +aqs_sampledurations() for a list of all available +duration codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): containing sample data
+
for all monitors matching stateFIPS for the given parameter.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • duration (None | str)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame with all benzene samples from +North Carolina collected from May 15th, 1995 - May 15, 1999:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.sampledata(parameter="45201",
+                       bdate=date(year=1995, month=5, day=15),
+                       edate=date(year=1995, month=5, day=15),
+                       stateFIPS="37")
+
+
+
+ +
+
+pyaqsapi.bystate.bystate.transactionsample(parameter: str, bdate: date, edate: date, stateFIPS: str, cbdate: None | date = None, cedate: None | date = None, return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return transactionsample data - aggregated by state in the AQS Submission +Transaction Format (RD) sample (raw) data for a parameter code aggregated +by matching input parameter, and stateFIPS provided for bdate - edate time +frame. Includes data both in submitted and standard units.

+
+
Parameters:
+
+
parametera character list or a single character string

which represents the parameter code of the air +pollutant related to the data being requested.

+
+
bdatea python date object which represents that begin date of the data

selection. Only data on or after this date will be returned.

+
+
edatea python date object which represents that end date of the data

selection. Only data on or before this date will be returned.

+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
cbdatea python date object which represents a “beginning date of

last change” that indicates when the data was last updated. +cbdate is used to filter data based on the change date. +Only data that changed on or after this date will be returned. +This is an optional variable which defaults to None.

+
+
cedatea python date object which represents an “end date of last

change” that indicates when the data was last updated. +cedate is used to filter data based on the change date. +Only data that changed on or before this date will be +returned. This is an optional variable which defaults +to None.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): transaction sample (raw) data
+
in the AQS submission transaction format (RD) corresponding to the inputs
+
provided.
+
+
+
Parameters:
+
    +
  • parameter (str)

  • +
  • bdate (date)

  • +
  • edate (date)

  • +
  • stateFIPS (str)

  • +
  • cbdate (None | date)

  • +
  • cedate (None | date)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Return a DataFrame containing benzene transaction sample data for +North Carolina on May 15, 1995:

+
import pyaqsapi as aqs
+from datetime import date
+...
+aqs.bystate.transactionsample(parameter="45201",
+                              bdate=date(year=1995,
+                                         month=5,
+                                         day=15),
+                              edate=date(year=1995,
+                                         month=5,
+                                         day=15),
+                              stateFIPS="37")
+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/pyaqsapi.html b/docs/_build/html/pyaqsapi.html new file mode 100644 index 0000000..2dc3d62 --- /dev/null +++ b/docs/_build/html/pyaqsapi.html @@ -0,0 +1,1212 @@ + + + + + + + + + pyaqsapi package — pyaqsapi documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pyaqsapi package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

pyaqsapi.helperfunctions module

+

helperfunctions.

+
+
+class pyaqsapi.helperfunctions.AQSAPI_V2
+

Bases: object

+
+

AQSAPI_V2 class used to store and retrieve data from the EPA AQS +Datamart API.

+
+

# for some reason Sphinx does not like this Attributes section so it is +# commented out, for now.

+

# Attributes +# ———- +# _header (pandas DataFrame): header information returned from the +# AQS Datamart API. +# _request_time (str): the time stamp that the call to the AQS Datamart +# API was received. +# _status (str): the status (associated with the _status_code) returned +# from a call to the AQS Datamart API. +# _status_code (str): the numeric status_code (represented as a string) +# that is returned from a call to the AQS Datamart API. +# _rows (str): the number of rows contained in the _data. +# _url (str): a string representing the URL used to make the AQS Datamart +# API call. +# _data (pandas DataFrame): the data returned from a call to the +# AQS Datamart API.

+
+
+

Methods

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

set_data():

set_header():

get_data():

get_header():

get_status_code():

get_header():

get_url():

get_header():

get_request_time():

+
+
+
+
+get_data() DataFrame
+

Return the Data portion of the AQSAPI_V2 instance.

+
+
Returns:
+
+
(pandas DataFrame) a DataFrame containing the Data portion of the
+
AQSAPI_V2 instance.
+
+
+
Return type:
+

DataFrame

+
+
+
+ +
+
+get_header() DataFrame
+

Return the Header portion of the AQSAPI_V2 instance.

+
+
Returns:
+
+
(pandas DataFrame) a DataFrame containing the Header portion of the
+
AQSAPI_V2 instance.
+
+
+
Return type:
+

DataFrame

+
+
+
+ +
+
+get_request_time() str
+

Retrieve the time that the request to the AQS DataMart API was made.

+
+
Returns:
+
+
(str) A string representing the time that that request to the AQS
+
DataMart API was made.
+
+
+
Return type:
+

str

+
+
+
+ +
+
+get_status_code() str
+

Retrieve the status code from the API call.

+
+
Returns:
+
+
(str) A string representing the status code returned from the EPA
+
DataMart API.
+
+
+
Return type:
+

str

+
+
+
+ +
+
+get_url() str
+

Retrieve the URL of the AQS DataMart API request.

+
+
Returns:
+
+
(str) A string representing the status code returned from the EPA
+
DataMart API.
+
+
+
Return type:
+

str

+
+
+
+ +
+
+set_data(Data: DataFrame) None
+

Set the Data of a single AQSAPI_V2 object.

+

Data must be a pandas DataFrame.

+
+
Returns:
+
+
None
+
+
+
Warns:
+
+
A warning is thrown if Data is not a pandas DataFrame
+
+
+
Parameters:
+

Data (DataFrame)

+
+
Return type:
+

None

+
+
+
+ +
+
+set_header(Header: DataFrame) None
+

Set the header of a single AQSAPI_V2 object. Header must be a +pandas DataFrame.

+
+
Parameters:
+
+
HeaderPandas DataFrame

A pandas.DataFrame instance with the header information.

+
+
+
+
Returns:
+
+
None.
+
+
+
Warns:
+
+
A warning is thrown if Header is not a pandas DataFrame
+
+
+
Parameters:
+

Header (DataFrame)

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+pyaqsapi.helperfunctions.aqs_credentials(username: None | str = None, key: None | str = None) None
+

Set the user credentials for the AQS API. This function +needs to be called once and only once every time this library +is re-loaded. Users must have a valid username and key which +can be obtained through the use of the aqs_sign_up function, +use pyaqsapi.aqs_sign_up() to sign up for AQS data mart credentials.

+
+
Parameters:
+
+
usernamea python character object which represents the email account

that will be used to connect to the AQS API.

+
+
keythe key used in conjunction with the username given to connect to

AQS Data Mart.

+
+
+
+
Returns:
+
+
None
+
+
+
Parameters:
+
    +
  • username (None | str)

  • +
  • key (None | str)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+pyaqsapi.helperfunctions.aqs_removeheader(aqsobject: list[AQSAPI_V2]) DataFrame | AQSAPI_V2
+

Coerces a single AQS_Data_Mart_APIv2 instance or a list of +AQS_Data_Mart_APIv2 instance into a single DataFrame object. +This function decouples the Data from the AQSAPI_v2 object and returns +only the Data portion as a DataFrame. If the input is a list of AQSAPI_v2 +objects combines the Data portion of each AQS_Data_Mart_APIv2 object +into a DataFrame with Header information discarded. +Else returns the input with no changes.

+
+
Parameters:
+
+
aqsobjectAn object of AQSAPI_v2 or a list of AQSAPI_v2 objects.
+
+
+
Returns:
+
+
(DataFrame) A DataFrame containing the data portion of the AQSAPI_V2
+
object.
+
+
+
Parameters:
+

aqsobject (list[AQSAPI_V2])

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+
+ +
+
+

pyaqsapi.listfunctions module

+

listfunctions.

+
+
+pyaqsapi.listfunctions.aqs_cbsas(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of all Core Based Statistical Areas (cbsa) and their +associated cbsa_codes.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): all cbsas and their associated
+
cbsa_codes.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of Core Based Statistical Areas (cbsas) +and their respective cbsa codes:

+
aqs_cbsas()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_classes(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of Parameter classes (groups of parameters, i.e. “criteria” +or “all”). The information from this function can be used as input to other +API calls.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): Parameter classes (groups of
+
parameters, i.e. “criteria” or “all”).
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of parameter classes (groups of parameters, i.e. +“criteria” or all”):

+
aqs_classes()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_counties_by_state(stateFIPS: str, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of all counties in within the stateFIPS provided.

+
+
Parameters:
+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): all counties in the requested
+
state.
+
+
+
Parameters:
+
    +
  • stateFIPS (str)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Returns a DataFrame of all the counties +in North Carolina the county FIPS codes (county codes) for each.:

+
aqs_counties_by_state(stateFIPS = "37")
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_fields_by_service(service: str, return_header: bool | None = False) DataFrame | AQSAPI_V2
+
+
Return a table containing the list and definitions of fields in the

service requested.

+
+
+
+
Parameters:
+
+
servicea string which represents the services provided by the AQS

API. For a list of available services refer to +https://aqs.epa.gov/aqsweb/documents/data_api.html#services

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): details the status of the AQS

API.

+
+
+
+
Parameters:
+
    +
  • service (str)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame containing a list and definitions +of fields in the Sample Data service.:

+
aqs_fieldsbyservice(service = "sampleData")
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_isavailable(return_header: bool | None = False) AQSAPI_V2 | DataFrame
+

Return a table explaining the status of the AQS API.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): details the status of the AQS

API.

+
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

AQSAPI_V2 | DataFrame

+
+
+

Examples

+

Check if the AQS API is up, running and accepting requests.:

+
aqs_isAvailable()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_knownissues(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of any known issues with system functionality or the data. +These are usually issues that have been identified internally and will +require some time to correct in Data Mart or the API. This function +implements a direct API call to Data Mart and returns data directly from +the API. Issues returned via this function do not include any issues from +the pyaqsapi python package.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): information involving known
+
issues with the Data Mart API.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Retrieve a DataFrame of known issues directly from the AQS data mart API:

+
aqs_knownissues()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_mas(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a DataFrame of monitoring agencies (MA).

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): monitoring agencies and their
+
associated agency code.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Returns a DataFrame of monitoring agencies and their respective +monitoring agency codes.:

+
aqs_mas()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_parameters_by_class(parameterclass: str, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of Parameter classes (groups of parameters, i.e. “criteria” +or “all”). The information from this function can be used as input to other +API calls.

+
+
Parameters:
+
+
parameterclass: a python character object that represents the class

requested, use aqs_classes() for retrieving available +classes. The parameterclass python character object must be +a valid parameterclass as returned from aqs_classes(). +The class must be an exact match to what is returned from +aqs_classes().

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): parameters associated with the
+
parameterclass requested. None is returned for parameterclasses not found.
+
+
+
Parameters:
+
    +
  • parameterclass (str)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of parameter classes (groups of parameters, i.e. +“criteria” or all”):

+
aqs_classes()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_pqaos(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of primary quality assurance organizations (pqaos).

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): pqaos and their associated
+
pqao_codes.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of primary quality assurance organizations (pqaos):

+
aqs_pqaos()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_revisionhistory(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table Returns that contains change history to the AQS Data Mart +API.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): details change history to the
+
AQS Data Mart API.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of the EPA AQS Data Mart API revision history:

+
aqs_revisionHistory()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_sampledurations(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of sample durations and their associated duration codes. +Returned values are not calculated durations such as 8 hour carbon monoxide +or ozone rolling averages, 3/6 day PM averages or Pb 3 month rolling +averages.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): sample durations and
+
their associated duration codes
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of:

+
aqs_sampledurations()
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_sites_by_county(stateFIPS: str, countycode: str, return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return data containing a table of all air monitoring sites with the input +state and county FIPS code combination.

+
+
Parameters:
+
+
stateFIPSa python character object which represents the 2 digit

state FIPS code (with leading zero) for the state being +requested. Use aqs_states() for the list of available +FIPS codes.

+
+
countycodea python character object which represents the 3 digit

state FIPS code for the county being requested +(with leading zero(s)). Use aqs_counties_by_state() for +the list of available county codes for each state.

+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): all air monitoring sites with
+
the requested state and county FIPS codes.
+
+
+
Parameters:
+
    +
  • stateFIPS (str)

  • +
  • countycode (str)

  • +
  • return_header (bool | None)

  • +
+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of all the counties +in North Carolina the county FIPS codes (county codes) for each.:

+
aqs_counties_by_state(stateFIPS = "37")
+
+
+
+ +
+
+pyaqsapi.listfunctions.aqs_states(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of US states, US territories, and the district or Columbia +with their respective FIPS codes.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): states and their associated FIPS
+
code.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+

Examples

+

Return a DataFrame of states and their FIPS codes:

+
aqs_states()}
+
+
+
+ +
+
+

pyaqsapi.metadatafunctions module

+

metadatafunctions.

+
+
+pyaqsapi.metadatafunctions.aqs_is_available(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return the status of the AQS API.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): Details the status of the
+
AQS API (The status information is located in the header).
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+
+ +
+
+pyaqsapi.metadatafunctions.aqs_knownissues(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return a table of any known issues with system functionality or the data. +These are usually issues that have been identified internally and will +require some time to correct in Data Mart or the API. This function +implements a direct API call to Data Mart and returns data directly from +the API. Issues returned via this function do not include any issues from +the pyaqsapi python package.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): Information involving known
+
issues with the Data Mart API.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+
+ +
+
+pyaqsapi.metadatafunctions.aqs_revisionhistory(return_header: bool | None = False) DataFrame | AQSAPI_V2
+

Return the change history to the AQS Data Mart API.

+
+
Parameters:
+
+
return_headerIf FALSE (default) only returns data requested. If TRUE

returns a AQSAPI_v2 object.

+
+
+
+
Returns:
+
+
(pandas DataFrame or an AQSAPI_V2 object): Information on the revision
+
history to the AQS Datamart API.
+
+
+
Parameters:
+

return_header (bool | None)

+
+
Return type:
+

DataFrame | AQSAPI_V2

+
+
+
+ +
+
+

pyaqsapi.setupfunctions module

+

setupfunctions.

+
+
+pyaqsapi.setupfunctions.aqs_sign_up(email: str) None
+

Use this service to register as a new user or to reset an existing user’s +key. A verification email will be sent to the email account specified. To +reset a password: If the request is made with an email that is already +registered, a new key will be issued for that account and emailed to the +listed address. Usage is the same in either case. Refer to the email +message for further instructions before continuing.

+
+
Parameters:
+
+
emailA python character object which represents the email account that

will be used to register with the AQS API or change an existing +user’s key. A verification email will be sent to the account +specified. Follow the instructions in the verification e-mail +before proceeding to use any other functionality of the AQS API. +Register your credential with the aqs_credentials() before using +the other functions in this library.

+
+
+
+
Returns:
+
+
None.
+
+
+
Parameters:
+

email (str)

+
+
Return type:
+

None

+
+
+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html new file mode 100644 index 0000000..6d6c9dd --- /dev/null +++ b/docs/_build/html/search.html @@ -0,0 +1,117 @@ + + + + + + + + Search — pyaqsapi documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024, US Environmental Protection Agency.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js new file mode 100644 index 0000000..8a7b32f --- /dev/null +++ b/docs/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"AQS DataMart Disclaimer": [[1, "aqs-datamart-disclaimer"], [2, "aqs-datamart-disclaimer"]], "About RAQSAPI": [[1, "about-raqsapi"], [6, null]], "About the timeliness of AQS Data": [[1, "about-the-timeliness-of-aqs-data"], [7, null]], "Data Mart API list functions": [[1, "data-mart-api-list-functions"], [11, "data-mart-api-list-functions"]], "Data Mart API metadata functions": [[1, "data-mart-api-metadata-functions"], [11, "data-mart-api-metadata-functions"]], "Data Mart aggregate functions": [[1, "data-mart-aggregate-functions"], [10, null], [11, "data-mart-aggregate-functions"]], "Data Mart aggregate functions by Core Based Statistical Area (cbsa)": [[1, "data-mart-aggregate-functions-by-core-based-statistical-area-cbsa"], [11, "data-mart-aggregate-functions-by-core-based-statistical-area-cbsa"]], "Data Mart aggregate functions by Monitoring agency (MA)": [[1, "data-mart-aggregate-functions-by-monitoring-agency-ma"], [11, "data-mart-aggregate-functions-by-monitoring-agency-ma"]], "Data Mart aggregate functions by Primary Quality Assurance Organization (pqao)": [[1, "data-mart-aggregate-functions-by-primary-quality-assurance-organization-pqao"], [11, "data-mart-aggregate-functions-by-primary-quality-assurance-organization-pqao"]], "Data Mart aggregate functions by latitude/longitude bounding box (bybox)": [[1, "data-mart-aggregate-functions-by-latitude-longitude-bounding-box-bybox"], [11, "data-mart-aggregate-functions-by-latitude-longitude-bounding-box-bybox"]], "Data Mart aggregate functions bycounty": [[1, "data-mart-aggregate-functions-bycounty"], [11, "data-mart-aggregate-functions-bycounty"]], "Data Mart aggregate functions bysite": [[1, "data-mart-aggregate-functions-bysite"], [11, "data-mart-aggregate-functions-bysite"]], "Data Mart aggregate functions bystate": [[1, "data-mart-aggregate-functions-bystate"], [11, "data-mart-aggregate-functions-bystate"]], "EPA Disclaimer": [[1, "epa-disclaimer"], [2, null]], "Functions Exported by pyaqsapi": [[1, "functions-exported-by-pyaqsapi"], [11, null]], "Index": [[0, null]], "Install pyaqsapi": [[1, "install-pyaqsapi"], [3, null]], "Introduction": [[1, "introduction"], [4, null]], "Load pyaqsapi": [[1, "load-pyaqsapi"], [5, null]], "References": [[1, "references"]], "Sign up and credentials": [[1, "sign-up-and-credentials"], [11, "sign-up-and-credentials"]], "Sign up and setting up user credentials with the pyaqsapi library": [[1, "sign-up-and-setting-up-user-credentials-with-the-pyaqsapi-library"], [9, "sign-up-and-setting-up-user-credentials-with-the-pyaqsapi-library"]], "Submodules": [[14, "submodules"], [15, "submodules"], [16, "submodules"], [17, "submodules"], [18, "submodules"], [19, "submodules"], [20, "submodules"], [21, "submodules"]], "Subpackages": [[14, "subpackages"]], "Troubleshooting": [[1, "troubleshooting"], [8, null]], "Usage tips and precautions": [[1, "usage-tips-and-precautions"], [12, null]], "Using pyaqsapi": [[1, "using-pyaqsapi"], [9, null]], "Variable descriptions and usage": [[1, "variable-descriptions-and-usage"], [11, "variable-descriptions-and-usage"]], "pyaqsapi": [[13, null]], "pyaqsapi API reference documentation": [[1, "pyaqsapi-api-reference-documentation"]], "pyaqsapi Miscellaneous functions": [[1, "pyaqsapi-miscellaneous-functions"], [11, "pyaqsapi-miscellaneous-functions"]], "pyaqsapi functional families": [[1, "pyaqsapi-functional-families"], [11, "pyaqsapi-functional-families"]], "pyaqsapi index": [[1, "pyaqsapi-index"]], "pyaqsapi package": [[14, null]], "pyaqsapi user documentation": [[1, null]], "pyaqsapi.bybox package": [[15, null]], "pyaqsapi.bybox.bybox module": [[15, "module-pyaqsapi.bybox.bybox"]], "pyaqsapi.bycbsa package": [[16, null]], "pyaqsapi.bycbsa.bycbsa module": [[16, "module-pyaqsapi.bycbsa.bycbsa"]], "pyaqsapi.bycounty package": [[17, null]], "pyaqsapi.bycounty.bycounty module": [[17, "module-pyaqsapi.bycounty.bycounty"]], "pyaqsapi.byma package": [[18, null]], "pyaqsapi.byma.byma module": [[18, "module-pyaqsapi.byma.byma"]], "pyaqsapi.bypqao package": [[19, null]], "pyaqsapi.bypqao.bypqao module": [[19, "module-pyaqsapi.bypqao.bypqao"]], "pyaqsapi.bysite package": [[20, null]], "pyaqsapi.bysite.bysite module": [[20, "module-pyaqsapi.bysite.bysite"]], "pyaqsapi.bystate package": [[21, null]], "pyaqsapi.bystate.bystate module": [[21, "module-pyaqsapi.bystate.bystate"]], "pyaqsapi.helperfunctions module": [[14, "module-pyaqsapi.helperfunctions"]], "pyaqsapi.listfunctions module": [[14, "module-pyaqsapi.listfunctions"]], "pyaqsapi.metadatafunctions module": [[14, "module-pyaqsapi.metadatafunctions"]], "pyaqsapi.setupfunctions module": [[14, "module-pyaqsapi.setupfunctions"]]}, "docnames": ["genindex", "index", "manual/EPA_Disclaimer", "manual/Install_pyaqsapi", "manual/Introduction", "manual/Load_pyaqsapi", "manual/RAQSAPI", "manual/TimelinessofAQSdata", "manual/Troubleshooting", "manual/Using_pyaqsapi", "manual/pyaqsapiFunctions-Brief", "manual/pyaqsapiFunctions-Long", "manual/pyaqsapiusagetipsandprecautions", "modules", "pyaqsapi", "pyaqsapi.bybox", "pyaqsapi.bycbsa", "pyaqsapi.bycounty", "pyaqsapi.byma", "pyaqsapi.bypqao", "pyaqsapi.bysite", "pyaqsapi.bystate"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinxcontrib.bibtex": 9}, "filenames": ["genindex.rst", "index.rst", "manual\\EPA_Disclaimer.rst", "manual\\Install_pyaqsapi.rst", "manual\\Introduction.rst", "manual\\Load_pyaqsapi.rst", "manual\\RAQSAPI.rst", "manual\\TimelinessofAQSdata.rst", "manual\\Troubleshooting.rst", "manual\\Using_pyaqsapi.rst", "manual\\pyaqsapiFunctions-Brief.rst", "manual\\pyaqsapiFunctions-Long.rst", "manual\\pyaqsapiusagetipsandprecautions.rst", "modules.rst", "pyaqsapi.rst", "pyaqsapi.bybox.rst", "pyaqsapi.bycbsa.rst", "pyaqsapi.bycounty.rst", "pyaqsapi.byma.rst", "pyaqsapi.bypqao.rst", "pyaqsapi.bysite.rst", "pyaqsapi.bystate.rst"], "indexentries": {"about raqsapi": [[1, "index-10", false], [6, "index-0", false]], "about the timeliness of aqs data": [[1, "index-2", false], [7, "index-0", false]], "aggregate functions": [[10, "index-1", false]], "annualsummary() (in module pyaqsapi.bybox)": [[15, "pyaqsapi.bybox.annualsummary", false]], "annualsummary() (in module pyaqsapi.bybox.bybox)": [[15, "pyaqsapi.bybox.bybox.annualsummary", false]], "annualsummary() (in module pyaqsapi.bycbsa)": [[16, "pyaqsapi.bycbsa.annualsummary", false]], "annualsummary() (in module pyaqsapi.bycbsa.bycbsa)": [[16, "pyaqsapi.bycbsa.bycbsa.annualsummary", false]], "annualsummary() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.annualsummary", false]], "annualsummary() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.annualsummary", false]], "annualsummary() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.annualsummary", false]], "annualsummary() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.annualsummary", false]], "annualsummary() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.annualsummary", false]], "annualsummary() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.annualsummary", false]], "aqs_cbsas() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_cbsas", false]], "aqs_classes() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_classes", false]], "aqs_counties_by_state() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_counties_by_state", false]], "aqs_credentials() (in module pyaqsapi.helperfunctions)": [[14, "pyaqsapi.helperfunctions.aqs_credentials", false]], "aqs_fields_by_service() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_fields_by_service", false]], "aqs_is_available() (in module pyaqsapi.metadatafunctions)": [[14, "pyaqsapi.metadatafunctions.aqs_is_available", false]], "aqs_isavailable() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_isavailable", false]], "aqs_knownissues() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_knownissues", false]], "aqs_knownissues() (in module pyaqsapi.metadatafunctions)": [[14, "pyaqsapi.metadatafunctions.aqs_knownissues", false]], "aqs_mas() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_mas", false]], "aqs_parameters_by_class() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_parameters_by_class", false]], "aqs_pqaos() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_pqaos", false]], "aqs_removeheader() (in module pyaqsapi.helperfunctions)": [[14, "pyaqsapi.helperfunctions.aqs_removeheader", false]], "aqs_revisionhistory() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_revisionhistory", false]], "aqs_revisionhistory() (in module pyaqsapi.metadatafunctions)": [[14, "pyaqsapi.metadatafunctions.aqs_revisionhistory", false]], "aqs_sampledurations() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_sampledurations", false]], "aqs_sign_up() (in module pyaqsapi.setupfunctions)": [[14, "pyaqsapi.setupfunctions.aqs_sign_up", false]], "aqs_sites_by_county() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_sites_by_county", false]], "aqs_states() (in module pyaqsapi.listfunctions)": [[14, "pyaqsapi.listfunctions.aqs_states", false]], "aqsapi_v2 (class in pyaqsapi.helperfunctions)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2", false]], "dailysummary() (in module pyaqsapi.bybox)": [[15, "pyaqsapi.bybox.dailysummary", false]], "dailysummary() (in module pyaqsapi.bybox.bybox)": [[15, "pyaqsapi.bybox.bybox.dailysummary", false]], "dailysummary() (in module pyaqsapi.bycbsa)": [[16, "pyaqsapi.bycbsa.dailysummary", false]], "dailysummary() (in module pyaqsapi.bycbsa.bycbsa)": [[16, "pyaqsapi.bycbsa.bycbsa.dailysummary", false]], "dailysummary() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.dailysummary", false]], "dailysummary() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.dailysummary", false]], "dailysummary() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.dailysummary", false]], "dailysummary() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.dailysummary", false]], "dailysummary() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.dailysummary", false]], "dailysummary() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.dailysummary", false]], "epa disclaimer": [[1, "index-0", false], [2, "index-0", false]], "get_data() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.get_data", false]], "get_header() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.get_header", false]], "get_request_time() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.get_request_time", false]], "get_status_code() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.get_status_code", false]], "get_url() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.get_url", false]], "install pyaqsapi": [[1, "index-3", false], [3, "index-0", false]], "introduction": [[1, "index-1", false], [4, "index-0", false]], "load pyaqsapi": [[1, "index-4", false], [5, "index-0", false]], "module": [[14, "module-pyaqsapi", false], [14, "module-pyaqsapi.helperfunctions", false], [14, "module-pyaqsapi.listfunctions", false], [14, "module-pyaqsapi.metadatafunctions", false], [14, "module-pyaqsapi.setupfunctions", false], [15, "module-pyaqsapi.bybox", false], [15, "module-pyaqsapi.bybox.bybox", false], [16, "module-pyaqsapi.bycbsa", false], [16, "module-pyaqsapi.bycbsa.bycbsa", false], [17, "module-pyaqsapi.bycounty", false], [17, "module-pyaqsapi.bycounty.bycounty", false], [18, "module-pyaqsapi.byma", false], [18, "module-pyaqsapi.byma.byma", false], [19, "module-pyaqsapi.bypqao", false], [19, "module-pyaqsapi.bypqao.bypqao", false], [20, "module-pyaqsapi.bysite", false], [20, "module-pyaqsapi.bysite.bysite", false], [21, "module-pyaqsapi.bystate", false], [21, "module-pyaqsapi.bystate.bystate", false]], "monitors() (in module pyaqsapi.bybox)": [[15, "pyaqsapi.bybox.monitors", false]], "monitors() (in module pyaqsapi.bybox.bybox)": [[15, "pyaqsapi.bybox.bybox.monitors", false]], "monitors() (in module pyaqsapi.bycbsa)": [[16, "pyaqsapi.bycbsa.monitors", false]], "monitors() (in module pyaqsapi.bycbsa.bycbsa)": [[16, "pyaqsapi.bycbsa.bycbsa.monitors", false]], "monitors() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.monitors", false]], "monitors() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.monitors", false]], "monitors() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.monitors", false]], "monitors() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.monitors", false]], "monitors() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.monitors", false]], "monitors() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.monitors", false]], "pyaqsapi": [[14, "module-pyaqsapi", false]], "pyaqsapi functions brief": [[10, "index-0", false]], "pyaqsapi functions long": [[1, "index-8", false], [11, "index-0", false]], "pyaqsapi.bybox": [[15, "module-pyaqsapi.bybox", false]], "pyaqsapi.bybox.bybox": [[15, "module-pyaqsapi.bybox.bybox", false]], "pyaqsapi.bycbsa": [[16, "module-pyaqsapi.bycbsa", false]], "pyaqsapi.bycbsa.bycbsa": [[16, "module-pyaqsapi.bycbsa.bycbsa", false]], "pyaqsapi.bycounty": [[17, "module-pyaqsapi.bycounty", false]], "pyaqsapi.bycounty.bycounty": [[17, "module-pyaqsapi.bycounty.bycounty", false]], "pyaqsapi.byma": [[18, "module-pyaqsapi.byma", false]], "pyaqsapi.byma.byma": [[18, "module-pyaqsapi.byma.byma", false]], "pyaqsapi.bypqao": [[19, "module-pyaqsapi.bypqao", false]], "pyaqsapi.bypqao.bypqao": [[19, "module-pyaqsapi.bypqao.bypqao", false]], "pyaqsapi.bysite": [[20, "module-pyaqsapi.bysite", false]], "pyaqsapi.bysite.bysite": [[20, "module-pyaqsapi.bysite.bysite", false]], "pyaqsapi.bystate": [[21, "module-pyaqsapi.bystate", false]], "pyaqsapi.bystate.bystate": [[21, "module-pyaqsapi.bystate.bystate", false]], "pyaqsapi.helperfunctions": [[14, "module-pyaqsapi.helperfunctions", false]], "pyaqsapi.listfunctions": [[14, "module-pyaqsapi.listfunctions", false]], "pyaqsapi.metadatafunctions": [[14, "module-pyaqsapi.metadatafunctions", false]], "pyaqsapi.setupfunctions": [[14, "module-pyaqsapi.setupfunctions", false]], "qa_annualpeferomanceeval() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_annualpeferomanceeval", false]], "qa_annualpeferomanceeval() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_annualpeferomanceeval", false]], "qa_annualpeferomanceeval() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_annualpeferomanceeval", false]], "qa_annualpeferomanceeval() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_annualpeferomanceeval", false]], "qa_annualperformanceeval() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_annualperformanceeval", false]], "qa_annualperformanceeval() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_annualperformanceeval", false]], "qa_annualperformanceeval() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_annualperformanceeval", false]], "qa_annualperformanceeval() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_annualperformanceeval", false]], "qa_annualperformanceeval() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_annualperformanceeval", false]], "qa_annualperformanceeval() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_annualperformanceeval", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_annualperformanceevaltransaction", false]], "qa_annualperformanceevaltransaction() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_annualperformanceevaltransaction", false]], "qa_blanks() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_blanks", false]], "qa_blanks() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_blanks", false]], "qa_collocated_assessments() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_collocated_assessments", false]], "qa_collocated_assessments() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_collocated_assessments", false]], "qa_flowrateaudit() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_flowrateaudit", false]], "qa_flowrateaudit() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_flowrateaudit", false]], "qa_flowrateverification() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_flowrateverification", false]], "qa_flowrateverification() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_flowrateverification", false]], "qa_one_point_qc() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_one_point_qc", false]], "qa_one_point_qc() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_one_point_qc", false]], "qa_pep_audit() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bypqao)": [[19, "pyaqsapi.bypqao.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bypqao.bypqao)": [[19, "pyaqsapi.bypqao.bypqao.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.qa_pep_audit", false]], "qa_pep_audit() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.qa_pep_audit", false]], "quarterlysummary() (in module pyaqsapi.bybox)": [[15, "pyaqsapi.bybox.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bybox.bybox)": [[15, "pyaqsapi.bybox.bybox.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bycbsa)": [[16, "pyaqsapi.bycbsa.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bycbsa.bycbsa)": [[16, "pyaqsapi.bycbsa.bycbsa.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.quarterlysummary", false]], "quarterlysummary() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.quarterlysummary", false]], "sampledata() (in module pyaqsapi.bybox)": [[15, "pyaqsapi.bybox.sampledata", false]], "sampledata() (in module pyaqsapi.bybox.bybox)": [[15, "pyaqsapi.bybox.bybox.sampledata", false]], "sampledata() (in module pyaqsapi.bycbsa)": [[16, "pyaqsapi.bycbsa.sampledata", false]], "sampledata() (in module pyaqsapi.bycbsa.bycbsa)": [[16, "pyaqsapi.bycbsa.bycbsa.sampledata", false]], "sampledata() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.sampledata", false]], "sampledata() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.sampledata", false]], "sampledata() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.sampledata", false]], "sampledata() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.sampledata", false]], "sampledata() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.sampledata", false]], "sampledata() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.sampledata", false]], "services": [[10, "index-2", false]], "set_data() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.set_data", false]], "set_header() (pyaqsapi.helperfunctions.aqsapi_v2 method)": [[14, "pyaqsapi.helperfunctions.AQSAPI_V2.set_header", false]], "sign_up": [[1, "index-6", false], [9, "index-1", false]], "transactionsample() (in module pyaqsapi.bycounty)": [[17, "pyaqsapi.bycounty.transactionsample", false]], "transactionsample() (in module pyaqsapi.bycounty.bycounty)": [[17, "pyaqsapi.bycounty.bycounty.transactionsample", false]], "transactionsample() (in module pyaqsapi.byma)": [[18, "pyaqsapi.byma.transactionsample", false]], "transactionsample() (in module pyaqsapi.byma.byma)": [[18, "pyaqsapi.byma.byma.transactionsample", false]], "transactionsample() (in module pyaqsapi.bysite)": [[20, "pyaqsapi.bysite.transactionsample", false]], "transactionsample() (in module pyaqsapi.bysite.bysite)": [[20, "pyaqsapi.bysite.bysite.transactionsample", false]], "transactionsample() (in module pyaqsapi.bystate)": [[21, "pyaqsapi.bystate.transactionsample", false]], "transactionsample() (in module pyaqsapi.bystate.bystate)": [[21, "pyaqsapi.bystate.bystate.transactionsample", false]], "troubleshooting pyaqsapi": [[1, "index-9", false], [8, "index-0", false]], "useage tips and precuations": [[1, "index-7", false], [12, "index-0", false]], "using pyaqsapi": [[1, "index-5", false], [9, "index-0", false]]}, "objects": {"": [[14, 0, 0, "-", "pyaqsapi"]], "pyaqsapi": [[15, 0, 0, "-", "bybox"], [16, 0, 0, "-", "bycbsa"], [17, 0, 0, "-", "bycounty"], [18, 0, 0, "-", "byma"], [19, 0, 0, "-", "bypqao"], [20, 0, 0, "-", "bysite"], [21, 0, 0, "-", "bystate"], [14, 0, 0, "-", "helperfunctions"], [14, 0, 0, "-", "listfunctions"], [14, 0, 0, "-", "metadatafunctions"], [14, 0, 0, "-", "setupfunctions"]], "pyaqsapi.bybox": [[15, 1, 1, "", "annualsummary"], [15, 0, 0, "-", "bybox"], [15, 1, 1, "", "dailysummary"], [15, 1, 1, "", "monitors"], [15, 1, 1, "", "quarterlysummary"], [15, 1, 1, "", "sampledata"]], "pyaqsapi.bybox.bybox": [[15, 1, 1, "", "annualsummary"], [15, 1, 1, "", "dailysummary"], [15, 1, 1, "", "monitors"], [15, 1, 1, "", "quarterlysummary"], [15, 1, 1, "", "sampledata"]], "pyaqsapi.bycbsa": [[16, 1, 1, "", "annualsummary"], [16, 0, 0, "-", "bycbsa"], [16, 1, 1, "", "dailysummary"], [16, 1, 1, "", "monitors"], [16, 1, 1, "", "quarterlysummary"], [16, 1, 1, "", "sampledata"]], "pyaqsapi.bycbsa.bycbsa": [[16, 1, 1, "", "annualsummary"], [16, 1, 1, "", "dailysummary"], [16, 1, 1, "", "monitors"], [16, 1, 1, "", "quarterlysummary"], [16, 1, 1, "", "sampledata"]], "pyaqsapi.bycounty": [[17, 1, 1, "", "annualsummary"], [17, 0, 0, "-", "bycounty"], [17, 1, 1, "", "dailysummary"], [17, 1, 1, "", "monitors"], [17, 1, 1, "", "qa_annualperformanceeval"], [17, 1, 1, "", "qa_annualperformanceevaltransaction"], [17, 1, 1, "", "qa_blanks"], [17, 1, 1, "", "qa_collocated_assessments"], [17, 1, 1, "", "qa_flowrateaudit"], [17, 1, 1, "", "qa_flowrateverification"], [17, 1, 1, "", "qa_one_point_qc"], [17, 1, 1, "", "qa_pep_audit"], [17, 1, 1, "", "quarterlysummary"], [17, 1, 1, "", "sampledata"], [17, 1, 1, "", "transactionsample"]], "pyaqsapi.bycounty.bycounty": [[17, 1, 1, "", "annualsummary"], [17, 1, 1, "", "dailysummary"], [17, 1, 1, "", "monitors"], [17, 1, 1, "", "qa_annualperformanceeval"], [17, 1, 1, "", "qa_annualperformanceevaltransaction"], [17, 1, 1, "", "qa_blanks"], [17, 1, 1, "", "qa_collocated_assessments"], [17, 1, 1, "", "qa_flowrateaudit"], [17, 1, 1, "", "qa_flowrateverification"], [17, 1, 1, "", "qa_one_point_qc"], [17, 1, 1, "", "qa_pep_audit"], [17, 1, 1, "", "quarterlysummary"], [17, 1, 1, "", "sampledata"], [17, 1, 1, "", "transactionsample"]], "pyaqsapi.byma": [[18, 0, 0, "-", "byma"], [18, 1, 1, "", "qa_annualpeferomanceeval"], [18, 1, 1, "", "qa_annualperformanceevaltransaction"], [18, 1, 1, "", "qa_blanks"], [18, 1, 1, "", "qa_collocated_assessments"], [18, 1, 1, "", "qa_flowrateaudit"], [18, 1, 1, "", "qa_flowrateverification"], [18, 1, 1, "", "qa_one_point_qc"], [18, 1, 1, "", "qa_pep_audit"], [18, 1, 1, "", "transactionsample"]], "pyaqsapi.byma.byma": [[18, 1, 1, "", "qa_annualpeferomanceeval"], [18, 1, 1, "", "qa_annualperformanceevaltransaction"], [18, 1, 1, "", "qa_blanks"], [18, 1, 1, "", "qa_collocated_assessments"], [18, 1, 1, "", "qa_flowrateaudit"], [18, 1, 1, "", "qa_flowrateverification"], [18, 1, 1, "", "qa_one_point_qc"], [18, 1, 1, "", "qa_pep_audit"], [18, 1, 1, "", "transactionsample"]], "pyaqsapi.bypqao": [[19, 0, 0, "-", "bypqao"], [19, 1, 1, "", "qa_annualperformanceeval"], [19, 1, 1, "", "qa_annualperformanceevaltransaction"], [19, 1, 1, "", "qa_blanks"], [19, 1, 1, "", "qa_collocated_assessments"], [19, 1, 1, "", "qa_flowrateaudit"], [19, 1, 1, "", "qa_flowrateverification"], [19, 1, 1, "", "qa_one_point_qc"], [19, 1, 1, "", "qa_pep_audit"]], "pyaqsapi.bypqao.bypqao": [[19, 1, 1, "", "qa_annualperformanceeval"], [19, 1, 1, "", "qa_annualperformanceevaltransaction"], [19, 1, 1, "", "qa_blanks"], [19, 1, 1, "", "qa_collocated_assessments"], [19, 1, 1, "", "qa_flowrateaudit"], [19, 1, 1, "", "qa_flowrateverification"], [19, 1, 1, "", "qa_one_point_qc"], [19, 1, 1, "", "qa_pep_audit"]], "pyaqsapi.bysite": [[20, 1, 1, "", "annualsummary"], [20, 0, 0, "-", "bysite"], [20, 1, 1, "", "dailysummary"], [20, 1, 1, "", "monitors"], [20, 1, 1, "", "qa_annualpeferomanceeval"], [20, 1, 1, "", "qa_annualperformanceevaltransaction"], [20, 1, 1, "", "qa_blanks"], [20, 1, 1, "", "qa_collocated_assessments"], [20, 1, 1, "", "qa_flowrateaudit"], [20, 1, 1, "", "qa_flowrateverification"], [20, 1, 1, "", "qa_one_point_qc"], [20, 1, 1, "", "qa_pep_audit"], [20, 1, 1, "", "quarterlysummary"], [20, 1, 1, "", "sampledata"], [20, 1, 1, "", "transactionsample"]], "pyaqsapi.bysite.bysite": [[20, 1, 1, "", "annualsummary"], [20, 1, 1, "", "dailysummary"], [20, 1, 1, "", "monitors"], [20, 1, 1, "", "qa_annualpeferomanceeval"], [20, 1, 1, "", "qa_annualperformanceevaltransaction"], [20, 1, 1, "", "qa_blanks"], [20, 1, 1, "", "qa_collocated_assessments"], [20, 1, 1, "", "qa_flowrateaudit"], [20, 1, 1, "", "qa_flowrateverification"], [20, 1, 1, "", "qa_one_point_qc"], [20, 1, 1, "", "qa_pep_audit"], [20, 1, 1, "", "quarterlysummary"], [20, 1, 1, "", "sampledata"], [20, 1, 1, "", "transactionsample"]], "pyaqsapi.bystate": [[21, 1, 1, "", "annualsummary"], [21, 0, 0, "-", "bystate"], [21, 1, 1, "", "dailysummary"], [21, 1, 1, "", "monitors"], [21, 1, 1, "", "qa_annualperformanceeval"], [21, 1, 1, "", "qa_annualperformanceevaltransaction"], [21, 1, 1, "", "qa_blanks"], [21, 1, 1, "", "qa_collocated_assessments"], [21, 1, 1, "", "qa_flowrateaudit"], [21, 1, 1, "", "qa_flowrateverification"], [21, 1, 1, "", "qa_one_point_qc"], [21, 1, 1, "", "qa_pep_audit"], [21, 1, 1, "", "quarterlysummary"], [21, 1, 1, "", "sampledata"], [21, 1, 1, "", "transactionsample"]], "pyaqsapi.bystate.bystate": [[21, 1, 1, "", "annualsummary"], [21, 1, 1, "", "dailysummary"], [21, 1, 1, "", "monitors"], [21, 1, 1, "", "qa_annualperformanceeval"], [21, 1, 1, "", "qa_annualperformanceevaltransaction"], [21, 1, 1, "", "qa_blanks"], [21, 1, 1, "", "qa_collocated_assessments"], [21, 1, 1, "", "qa_flowrateaudit"], [21, 1, 1, "", "qa_flowrateverification"], [21, 1, 1, "", "qa_one_point_qc"], [21, 1, 1, "", "qa_pep_audit"], [21, 1, 1, "", "quarterlysummary"], [21, 1, 1, "", "sampledata"], [21, 1, 1, "", "transactionsample"]], "pyaqsapi.helperfunctions": [[14, 2, 1, "", "AQSAPI_V2"], [14, 1, 1, "", "aqs_credentials"], [14, 1, 1, "", "aqs_removeheader"]], "pyaqsapi.helperfunctions.AQSAPI_V2": [[14, 3, 1, "", "get_data"], [14, 3, 1, "", "get_header"], [14, 3, 1, "", "get_request_time"], [14, 3, 1, "", "get_status_code"], [14, 3, 1, "", "get_url"], [14, 3, 1, "", "set_data"], [14, 3, 1, "", "set_header"]], "pyaqsapi.listfunctions": [[14, 1, 1, "", "aqs_cbsas"], [14, 1, 1, "", "aqs_classes"], [14, 1, 1, "", "aqs_counties_by_state"], [14, 1, 1, "", "aqs_fields_by_service"], [14, 1, 1, "", "aqs_isavailable"], [14, 1, 1, "", "aqs_knownissues"], [14, 1, 1, "", "aqs_mas"], [14, 1, 1, "", "aqs_parameters_by_class"], [14, 1, 1, "", "aqs_pqaos"], [14, 1, 1, "", "aqs_revisionhistory"], [14, 1, 1, "", "aqs_sampledurations"], [14, 1, 1, "", "aqs_sites_by_county"], [14, 1, 1, "", "aqs_states"]], "pyaqsapi.metadatafunctions": [[14, 1, 1, "", "aqs_is_available"], [14, 1, 1, "", "aqs_knownissues"], [14, 1, 1, "", "aqs_revisionhistory"]], "pyaqsapi.setupfunctions": [[14, 1, 1, "", "aqs_sign_up"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "terms": {"": [1, 2, 3, 4, 7, 9, 11, 14, 17, 20], "0": 15, "000": [1, 12], "0002": 20, "0007": 20, "001": [17, 20], "0010": 20, "0013": [18, 19], "0014": 20, "003": [17, 20], "01": [1, 8, 16, 17, 20, 21], "033": [17, 20], "0550": [18, 19], "0660": 18, "089": [17, 20], "0972": 18, "1": [1, 7, 8, 12, 15, 16, 17, 18, 19, 20, 21], "10": [1, 11, 12], "1002": 20, "12": [1, 11, 15, 17, 18, 19, 20, 21], "13": 10, "15": [17, 18, 20, 21], "15th": 21, "16740": 16, "18": 20, "183": [17, 20], "1995": [15, 21], "1999": 21, "2": [1, 11, 14, 15, 17, 20, 21], "2013": [17, 18, 19, 20, 21], "2015": [15, 16, 17, 18, 20], "2016": [17, 18, 20, 21], "2017": [15, 16, 17, 18, 19, 20, 21], "2018": [1, 17, 18, 19, 20, 21], "2019": [1, 20, 21], "2022": 1, "2024": 1, "23": 17, "25": [20, 21], "28": 17, "3": [1, 4, 6, 9, 11, 14, 15, 16, 17, 20, 21], "30": [18, 19], "31": [15, 17, 18, 19, 20, 21], "33": 15, "37": [14, 17, 20, 21], "4": [1, 11, 15, 16, 17, 18, 19, 20, 21], "42401": [17, 20], "42602": 16, "44201": [15, 17, 18, 19, 20, 21], "45201": 21, "5": [1, 11, 12, 15, 16, 17, 18, 19, 20, 21], "6": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "7": [1, 7, 10, 15], "70": [1, 11, 15], "8": [1, 11, 14, 15, 16, 17, 20, 21], "80": [1, 11, 15], "86": 15, "87": 15, "88101": [17, 18, 19, 20, 21], "A": [1, 9, 11, 14], "As": [1, 2, 15, 16, 17, 20, 21], "At": [1, 11], "Be": [1, 12], "By": [1, 9, 11, 18, 19], "For": [1, 6, 7, 9, 11, 12, 14, 20], "If": [1, 4, 7, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "In": [1, 12], "No": [1, 2], "Not": [1, 11], "Of": 19, "One": [1, 10, 11, 18, 20], "The": [1, 2, 4, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21], "There": [1, 10, 11, 15, 16, 17, 20, 21], "These": [1, 10, 11, 12, 14], "To": [1, 3, 14], "With": [1, 11], "_": [1, 11], "_by_box": 15, "_by_ma": 18, "_data": 14, "_header": 14, "_request_tim": 14, "_row": 14, "_statu": 14, "_status_cod": 14, "_url": 14, "abl": [1, 10, 11], "about": 11, "about_aqs_data": 1, "abov": 10, "accept": [1, 11, 14], "access": [1, 9], "accord": [1, 11], "account": [1, 2, 9, 11, 12, 14], "accuraci": [1, 2], "act": [1, 2], "activ": [1, 2], "actual": [1, 11, 15, 16, 17, 20, 21], "ad": [1, 12], "addit": [1, 11], "address": [1, 9, 12, 14], "adher": [1, 12], "administr": [1, 12], "advis": [1, 12], "after": [1, 4, 9, 11, 15, 16, 17, 18, 19, 20, 21], "agenc": [2, 4, 9, 10, 14, 18, 19], "aggreg": [12, 15, 16, 17, 18, 19, 20, 21], "aim": [1, 6], "air": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "airnow": [1, 7], "airport": 20, "al": [17, 18, 19, 20], "alabama": [1, 8, 15, 18, 19, 21], "all": [1, 4, 7, 10, 11, 14, 15, 16, 17, 18, 20, 21], "allow": [1, 4, 15, 16, 17, 20, 21], "alphabet": [1, 11], "alreadi": [1, 9, 14], "also": [1, 2, 9, 15, 16, 17, 20, 21], "ambient": 1, "amount": [1, 10, 11, 12], "an": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "ani": [1, 2, 5, 9, 11, 14], "annual": [1, 10, 11, 15, 16, 17, 18, 19, 20, 21], "annualdata": [1, 10, 11, 12], "annualpeferomanceev": 20, "annualperformanceev": 17, "annualsummari": [1, 11, 13, 14, 15, 16, 17, 20, 21], "anoth": [1, 11, 12], "anyon": [1, 6], "api": [2, 4, 6, 7, 9, 10, 12, 14, 15, 16, 17, 20, 21], "applic": [1, 2], "aq": [4, 5, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "aqs_cbsa": [1, 11, 13, 14], "aqs_class": [1, 11, 13, 14], "aqs_counties_by_st": [1, 11, 13, 14, 17, 20], "aqs_credenti": [1, 9, 11, 13, 14], "aqs_data": [16, 21], "aqs_data_mart_apiv2": 14, "aqs_fields_by_servic": [1, 11, 13, 14], "aqs_fieldsbyservic": 14, "aqs_is_avail": [13, 14], "aqs_isavail": [1, 11, 13, 14], "aqs_knownissu": [1, 11, 13, 14], "aqs_ma": [1, 11, 13, 14], "aqs_parameters_by_class": [1, 11, 13, 14], "aqs_pqao": [1, 11, 13, 14], "aqs_qa_annualperformanceev": [1, 11], "aqs_qa_annualperformanceevaltransact": [1, 11], "aqs_qa_blank": 19, "aqs_qa_flowrateaudit": 10, "aqs_qa_flowrateverif": 19, "aqs_quarterlysummari": 20, "aqs_removehead": [1, 11, 13, 14], "aqs_revisionhistori": [1, 11, 13, 14], "aqs_sampledur": [1, 11, 13, 14, 15, 16, 17, 20, 21], "aqs_sign_up": [1, 9, 11, 13, 14], "aqs_sites_by_counti": [1, 11, 13, 14], "aqs_stat": [1, 11, 13, 14, 17, 20, 21], "aqsapi": [15, 16, 17, 20, 21], "aqsapi_v2": [1, 4, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21], "aqsobject": [1, 11, 14], "aqsweb": [1, 11, 14], "ar": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "area": [10, 14, 15, 16], "argument": [1, 11], "arrang": [1, 11], "assess": [1, 10, 11, 17, 18, 19, 20, 21], "associ": [1, 4, 14], "assum": [1, 2], "assur": [10, 14, 16, 17, 18, 19, 20, 21], "attempt": [1, 9], "attribut": 14, "audit": [1, 10, 11, 17, 18, 19, 20, 21], "august": 1, "authent": [1, 9], "author": [1, 2], "avail": [1, 2, 4, 10, 11, 14, 15, 16, 17, 20, 21], "averag": [1, 11, 12, 14, 15, 16, 17, 20, 21], "baldwin": [17, 20], "barnstabl": 20, "base": [10, 14, 15, 16, 17, 18, 19, 20, 21], "basi": [1, 11], "basic": [1, 4], "bdate": [1, 11, 15, 16, 17, 18, 19, 20, 21], "been": [1, 2, 4, 11, 14], "befor": [1, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "begin": [1, 11, 15, 16, 17, 18, 19, 20, 21], "being": [1, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "benefit": [1, 6], "benzen": 21, "beta": [1, 2], "between": [1, 11, 15, 16, 17, 18, 19, 20, 21], "bia": [1, 11], "big": [15, 16, 17, 20, 21], "billion": [1, 12], "blank": [1, 10, 11, 17, 18, 19, 20, 21], "bool": [14, 15, 16, 17, 18, 19, 20, 21], "both": [1, 9, 11, 17, 18, 21], "bound": [10, 15], "box": [10, 15], "build": [1, 3], "bureau": [1, 10, 11, 16], "bybox": [10, 13, 14], "bycbsa": [1, 10, 11, 13, 14], "bycounti": [10, 13, 14], "byma": [1, 10, 11, 13, 14], "bypqao": [1, 10, 11, 13, 14], "bysit": [10, 13, 14], "bystat": [10, 13, 14], "calcul": [1, 11, 12, 14, 15, 16, 17, 20, 21], "calendar": [15, 16, 17, 20, 21], "calibr": [1, 11], "call": [1, 4, 9, 10, 11, 14, 15, 16, 17, 20, 21], "can": [1, 9, 11, 12, 14], "cannot": [1, 7], "capabl": [1, 12], "carbon": [14, 15, 16, 17, 20, 21], "carolina": [14, 21], "case": 14, "categori": [1, 11], "cbdate": [1, 11, 15, 16, 17, 18, 19, 20, 21], "cbsa": [14, 16], "cbsa_cod": [1, 11, 14, 16], "cedat": [1, 11, 15, 16, 17, 18, 19, 20, 21], "censu": [1, 10, 11, 16], "central": 15, "certain": [1, 2, 11, 12], "challeng": [1, 4, 11], "chang": [1, 2, 9, 11, 14, 16, 17, 18, 19, 20, 21], "charact": [1, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "charlott": 16, "check": [1, 11, 14, 18, 21], "class": [1, 9, 11, 14], "clinton": 1, "clone": [1, 3], "co": [1, 11], "coast": 18, "code": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "coerc": [1, 4, 11, 14], "colbert": [17, 20], "collect": [1, 7, 11, 12, 17, 18, 19, 20, 21], "colloc": [1, 10, 11, 12, 17, 18, 19, 20, 21], "columbia": 14, "com": [1, 3], "combin": [1, 9, 11, 12, 14, 16, 17, 20, 21], "comment": 14, "commerci": [1, 2], "complet": [1, 10, 11, 12], "concentr": [1, 11], "concord": 16, "conduct": [1, 11], "confidenti": [1, 2], "configur": [1, 4], "conjunct": [1, 11, 14], "connect": [1, 4, 11, 14], "constitut": [1, 2], "construct": [1, 11], "contact": [1, 12], "contain": [1, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "contamin": [1, 11, 17, 18, 19, 20, 21], "continu": 14, "control": [1, 2, 10, 11], "conveni": [1, 12, 15, 16, 17, 20, 21], "core": [10, 14, 16], "correct": [1, 11, 14], "correspond": [17, 18, 20, 21], "count": [1, 12], "counti": [1, 10, 11, 14, 17, 18, 19, 20, 21], "county_cod": [1, 11, 15, 17, 20], "countycod": [1, 11, 14, 17, 19, 20], "creat": [1, 9], "credenti": [4, 14], "criteria": [1, 11, 12, 14], "current": [1, 2, 12], "dai": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "daili": [1, 10, 11, 12, 15, 16, 17, 20, 21], "dailydata": 10, "dailysummari": [1, 11, 13, 14, 15, 16, 17, 20, 21], "data": [2, 4, 9, 12, 14, 15, 16, 17, 18, 19, 20, 21], "data_api": [1, 11, 14], "data_mart_welcom": 1, "datafram": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "dataframe": 19, "datamart": [7, 9, 11, 14], "datat": [1, 11], "date": [1, 11, 15, 16, 17, 18, 19, 20, 21], "datetim": [15, 16, 17, 18, 19, 20, 21], "deal": [1, 4], "decid": [1, 4, 11], "decim": [1, 11, 15], "decoupl": 14, "default": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "defin": [1, 10, 11, 12, 16], "definit": 14, "depart": [18, 19], "depend": [1, 3], "design": [1, 2], "detail": [1, 7, 11, 14], "determin": [1, 11, 12], "develop": [1, 2], "devic": [1, 11, 17, 18, 19, 20, 21], "differ": [1, 9, 10, 11], "digit": [1, 11, 14, 16, 17, 18, 19, 20, 21], "direct": [1, 7, 11, 14], "directli": [1, 4, 11, 14], "directori": [1, 3], "disabl": [1, 12], "discard": 14, "distribut": [1, 2, 12], "district": [14, 18], "do": [1, 8, 9, 11, 12, 14], "doc": 1, "document": [2, 11, 14], "doe": [1, 2, 6, 7, 9, 12, 14, 15, 16, 17, 20, 21], "done": [1, 9], "driver": [1, 4], "durat": [1, 11, 14, 15, 16, 17, 20, 21], "dure": [1, 11, 17, 18, 19, 20, 21], "e": [1, 9, 11, 14, 17, 18, 19, 20, 21], "each": [1, 4, 6, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21], "east": [1, 11, 15], "edat": [1, 11, 15, 16, 17, 18, 19, 20, 21], "either": [1, 9, 10, 14], "els": 14, "email": [1, 9, 11, 12, 14], "enabl": [1, 4], "encod": [1, 11], "encrypt": [1, 9], "end": [1, 11, 15, 16, 17, 18, 19, 20, 21], "endors": [1, 2], "enter": [1, 8, 9], "entir": [1, 11], "environ": [1, 4, 5, 6], "environment": [1, 2, 4, 9, 18, 19], "epa": [4, 7, 11, 14], "estim": [1, 11], "etc": [1, 11, 15, 16, 17, 20, 21], "evalu": [1, 10, 11, 17, 18, 19, 20, 21], "everi": [1, 9, 11, 14], "ew": [1, 9], "exact": 14, "exactli": [1, 8], "exampl": [1, 8, 14, 15, 16, 17, 18, 19, 20, 21], "except": [1, 12], "exist": [1, 9, 11, 12, 14], "expect": [1, 8], "expert": [1, 11], "explain": 14, "export": 9, "expos": [1, 11, 17, 18, 19, 20, 21], "express": [1, 2], "extens": 1, "extern": [1, 4], "extract": [15, 16, 17, 20, 21], "failur": [1, 12], "fairhop": 20, "fals": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "famili": 10, "familiar": [1, 6, 9], "favor": [1, 2], "featur": [1, 6], "februari": 17, "feel": [1, 6, 9], "fem": [17, 20, 21], "few": [1, 9], "fidel": [1, 12], "field": [1, 12, 14], "filter": [1, 11, 15, 16, 17, 18, 19, 20, 21], "final": [1, 2], "fine": [1, 11], "fip": [1, 11, 14, 17, 20, 21], "first": [1, 3, 15], "five": [1, 4], "fix": [1, 11], "flow": [1, 10, 11, 16, 17, 18, 19, 20, 21], "flowrat": [17, 18, 19, 20, 21], "follow": [1, 11, 12, 14], "format": [1, 4, 10, 11, 17, 18, 19, 20, 21], "found": 14, "fourteen": [1, 11], "frame": [1, 9, 15, 16, 17, 18, 19, 20, 21], "frequenc": [1, 12], "frm": [17, 18, 19, 20, 21], "frm2": 21, "from": [1, 4, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "full": [1, 10, 11, 20], "function": [2, 4, 6, 9, 12, 14, 15, 16, 17, 18, 19, 20, 21], "further": 14, "futur": [1, 12], "g": [1, 11, 17, 18, 19, 20, 21], "gaseou": [1, 11], "gastonia": 16, "gener": [1, 9], "genindex": 1, "geograph": [1, 11, 12, 15], "geographi": [1, 11, 12], "get_data": [1, 9, 13, 14], "get_head": [1, 9, 13, 14], "get_request_tim": [13, 14], "get_status_cod": [13, 14], "get_url": [13, 14], "git": [1, 3], "github": [1, 3], "given": [1, 9, 11, 14, 16, 17, 20, 21], "global": [1, 9], "gov": [1, 11, 14], "govern": [1, 2], "grain": [1, 11], "group": [1, 10, 11, 14], "ha": [1, 2, 4, 15, 16, 17, 20, 21], "handl": [1, 4, 11, 17, 18, 19, 20, 21], "hardwar": [1, 2], "have": [1, 4, 6, 9, 11, 12, 14], "hawaii": [17, 20, 21], "header": [1, 4, 9, 14], "health": [18, 19], "help": [1, 4], "helperfunct": [1, 11, 13], "hi": [17, 20], "histori": [1, 11, 14], "host": [1, 7], "hour": [1, 11, 14, 15, 16, 17, 20, 21], "hourli": [1, 11], "how": [1, 9, 10, 11, 12], "howev": [1, 9], "html": [1, 11, 14], "http": [1, 3, 4, 11, 14], "huntsvil": 20, "hypertext": [1, 4], "i": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "identifi": [1, 11, 14], "implement": [1, 4, 11, 14], "impli": [1, 2], "import": [1, 5, 15, 16, 17, 18, 19, 20, 21], "improv": [1, 2], "includ": [1, 4, 11, 14, 15, 16, 17, 18, 19, 20, 21], "increas": [15, 16, 17, 20, 21], "independ": [1, 11], "indic": [1, 11, 16, 17, 18, 19, 20, 21], "inform": [1, 2, 4, 9, 11, 14, 15, 16, 17, 20, 21], "input": [1, 9, 14, 15, 16, 17, 18, 19, 20, 21], "insert": [15, 16, 17, 20, 21], "instal": [4, 5], "instanc": [1, 4, 14], "instead": [1, 11], "instruct": 14, "integr": [1, 2], "intend": [1, 9, 12], "interfac": [1, 2, 4], "intern": [1, 11, 14], "investig": [1, 12], "invok": [1, 4], "involv": 14, "issu": [1, 11, 14], "januari": [1, 16, 17, 18, 19, 20, 21], "jefferson": [17, 18, 19], "json": [1, 4], "june": [18, 19, 20], "just": [1, 11], "kei": [1, 9, 11, 14], "known": [1, 11, 14], "languag": [1, 6], "last": [1, 11, 16, 17, 18, 19, 20, 21], "later": [1, 11], "latitud": [10, 15], "lead": [1, 8, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "least": [1, 11], "left": [1, 12], "legaci": [1, 4], "length": [15, 16, 17, 20, 21], "less": [1, 11, 15], "level": [1, 11, 12, 16, 17, 20, 21], "liabil": [1, 2], "librari": [4, 11, 12, 14], "like": [1, 5, 14], "limit": [1, 4, 11, 12, 15, 16, 17, 20, 21], "linear": [15, 16, 17, 20, 21], "list": [9, 10, 14, 15, 16, 17, 18, 19, 20, 21], "listfunct": 13, "load": [9, 11, 12, 14], "local": [1, 11], "locat": 14, "logo": [1, 2], "longer": [1, 2, 10, 11], "longitud": [10, 15], "loss": [1, 12], "m": [1, 3], "ma": [14, 18, 20], "ma_cod": [1, 11, 18], "made": [1, 2, 14], "madison": [17, 20], "mai": [1, 2, 8, 9, 12, 15, 17, 18, 20, 21], "mail": [1, 9, 14], "make": [1, 5, 10, 11, 12, 14, 15, 16, 17, 20, 21], "manag": [18, 19], "mani": [1, 12], "manner": [1, 2], "manual": [1, 9], "manufactur": [1, 2], "mark": [1, 2], "mart": [2, 4, 9, 12, 14], "mart_apiv2": [16, 21], "massachusett": [18, 21], "match": [14, 15, 16, 17, 18, 19, 20, 21], "maxima": [1, 11, 15, 16, 17, 20, 21], "maximum": [1, 10, 11, 15, 16, 17, 20, 21], "maxlat": [1, 11, 15], "maxlon": [1, 11, 15], "mccrowei": 1, "mean": [1, 2, 9, 11, 15, 16, 17, 20, 21], "measur": [1, 11], "messag": [1, 9, 14], "meta": [1, 11], "metadata": [4, 15, 17, 20, 21], "metadatafunct": 13, "method": [1, 4, 9, 11, 14], "midnight": [1, 11], "millbrook": 20, "minimum": [1, 11, 15], "minlat": [1, 11, 15], "minlon": [1, 11, 15], "minor": [1, 9], "minut": [1, 11, 12], "modul": [1, 9, 13], "monitor": [9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "monoxid": [14, 15, 16, 17, 20, 21], "month": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "monthli": [1, 12], "more": [1, 7, 10, 11, 12], "most": [1, 4, 6, 11], "moth": 19, "much": [1, 12], "multipl": [1, 4, 10, 11, 12, 15, 16, 17, 20, 21], "multipli": [1, 12], "muscl": 20, "must": [1, 8, 11, 12, 14], "n": [15, 16, 17, 20, 21], "name": [1, 10, 11], "nation": 20, "nc": [16, 17, 20], "need": [1, 4, 7, 9, 12, 14], "neither": [1, 6], "new": [1, 9, 14], "next": [1, 3], "no2": [1, 12, 16], "none": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "nor": [1, 2], "north": [1, 11, 14, 15, 21], "notat": [15, 16, 17, 20, 21], "note": [1, 9, 10, 11, 15, 16, 17, 20, 21], "notic": [1, 2, 12], "now": [1, 7, 14], "np": 20, "number": [1, 11, 12, 14, 15, 16, 17, 20, 21], "numer": 14, "o": [1, 11, 15, 16, 17, 20, 21], "o_3": [1, 11], "object": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "observ": [1, 12], "obtain": 14, "occur": [1, 2, 11, 17, 18, 19, 20, 21], "odbc": [1, 4], "offend": [1, 12], "old": 20, "omit": [1, 4, 8], "onc": [1, 11, 14], "one": [1, 6, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21], "onli": [1, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "oper": [1, 11, 15, 16, 17, 18, 20, 21], "option": [1, 11, 15, 16, 17, 18, 19, 20, 21], "order": [1, 12], "org": 1, "organ": [10, 14, 19], "orphan": 1, "other": [1, 4, 5, 6, 11, 12, 14], "otherwis": [1, 2], "out": 14, "output": [1, 11], "over": [1, 6], "overload": [1, 4, 15, 16, 17, 20, 21], "overview": [1, 11], "ozon": [1, 12, 14, 15, 16, 17, 18, 19, 20, 21], "packag": [1, 2, 3, 4, 5, 6, 9, 11, 13], "page": [1, 7], "pair": [1, 11, 17, 18, 19, 20, 21], "panda": [1, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "paramet": [1, 4, 6, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "parameterclass": 14, "pariti": [1, 6], "password": [1, 9, 14], "pb": [1, 11, 14], "pep": [1, 10, 11, 17, 18, 19, 20, 21], "per": [1, 10, 11, 12], "percent": [1, 11], "percentil": [1, 11, 15, 16, 17, 20, 21], "perform": [1, 10, 11, 17, 18, 19, 20, 21], "period": 20, "phase": [1, 2], "pip": [1, 3], "place": [1, 11], "plain": [1, 9], "pleas": [1, 7, 12], "pm": [1, 11, 14, 15, 16, 17, 20, 21], "pm2": [1, 12, 17, 18, 19, 20, 21], "point": [1, 10, 11, 18, 19, 20, 21], "pollut": [1, 4, 11, 12, 15, 16, 17, 18, 19, 20, 21], "port": [1, 6], "portion": [14, 15, 16, 17, 20, 21], "posit": [1, 11, 15], "pqao": [14, 19], "pqao_cod": [1, 11, 14, 19], "prefer": [1, 6], "prevent": [1, 4, 15, 16, 17, 20, 21], "primari": [10, 14, 19], "problem": [1, 2], "procedur": [1, 12], "proceed": 14, "process": [1, 2, 12], "product": [1, 2], "program": [1, 4, 6, 11, 17, 18, 19, 20, 21], "project": [1, 3, 6, 9], "proper": [1, 3], "protect": [1, 2, 4, 9, 18], "protocol": [1, 4], "provid": [1, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "pyaqsapi": [4, 6, 7, 10], "pydata": 1, "python": [1, 3, 4, 5, 6, 9, 14, 15, 16, 17, 18, 19, 20, 21], "qa": [17, 18, 19, 20, 21], "qa_annualpeferomanceev": [1, 11, 13, 14, 18, 20], "qa_annualperformanceev": [1, 10, 11, 13, 14, 17, 19, 21], "qa_annualperformanceevaltransact": [1, 10, 11, 13, 14, 17, 18, 19, 20, 21], "qa_annualperformanceevaltransactiona": 18, "qa_blank": [1, 10, 11, 13, 14, 17, 18, 19, 20, 21], "qa_collocated_assess": [1, 10, 11, 13, 14, 17, 18, 19, 20, 21], "qa_flowrateaudit": [1, 11, 13, 14, 17, 18, 19, 20, 21], "qa_flowrateverif": [1, 10, 11, 13, 14, 17, 18, 19, 20, 21], "qa_one_point_qc": [1, 10, 11, 13, 14, 17, 18, 19, 20, 21], "qa_pep_audit": [1, 10, 11, 13, 14, 17, 18, 19, 20, 21], "qc": [18, 19, 20, 21], "qq": 18, "qualiti": [2, 4, 9, 10, 14, 16, 17, 18, 19, 20, 21], "quarter": [15, 16, 17, 20, 21], "quarterli": [1, 11, 15, 16, 17, 20, 21], "quarterlydata": [1, 11], "quarterlysummari": [1, 11, 13, 14, 15, 16, 17, 20, 21], "queri": [1, 11, 12], "question": [1, 7], "r": [1, 3], "raqsapi": [9, 12], "rate": [1, 4, 10, 11, 16, 17, 18, 19, 20, 21], "raw": [1, 10, 11, 17, 18, 19, 20, 21], "rd": [1, 10, 11, 17, 18, 19, 20, 21], "re": 14, "real": [1, 7], "reason": 14, "receiv": [1, 11, 14], "recommend": [1, 2], "record": [1, 12], "rectangular": 15, "ref": [1, 11], "refer": [2, 11, 14], "reflect": [1, 2], "regard": [1, 2, 9], "regener": [1, 9], "regist": [1, 11, 14], "regul": [1, 12], "reject": [1, 9], "relat": [1, 4, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21], "relinquish": [1, 2], "remov": [1, 2], "repeat": [1, 10, 11, 15, 16, 17, 20, 21], "report": [1, 11], "repositori": [1, 3], "repres": [1, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "request": [1, 4, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "requir": [1, 3, 11, 14, 15, 16, 17, 20, 21], "reset": 14, "respect": [1, 2, 11, 14], "respons": [1, 2, 11], "restrict": [1, 10, 11], "result": [1, 2, 4, 8, 10, 11, 12, 15, 16, 17, 20, 21], "retriev": [1, 4, 7, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21], "return": [1, 4, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "return_head": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "revis": 14, "roll": [1, 11, 14, 15, 16, 17, 20, 21], "root": [1, 3], "routin": [1, 12], "row": [1, 12, 14], "run": [14, 15, 16, 17, 20, 21], "s3": [17, 21], "same": [1, 5, 6, 9, 11, 12, 14, 16], "sampl": [1, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "sampledata": [1, 10, 11, 13, 14, 15, 16, 17, 20, 21], "sampler": [1, 11], "save": [1, 11], "school": 20, "seal": [1, 2], "seashor": 20, "second": [1, 4, 15, 16, 17, 20, 21], "section": [1, 7, 11, 12, 14], "secur": [1, 4], "see": [1, 7, 11], "select": [1, 11, 15, 16, 17, 18, 19, 20, 21], "send": [1, 12], "sent": [1, 6, 9, 11, 14], "separ": [15, 16, 17, 20, 21], "serv": [1, 4], "server": [1, 4, 9, 12, 15, 16, 17, 20, 21], "servic": [1, 2, 7, 9, 10, 11, 12, 14], "set": [4, 11, 14], "set_data": [13, 14], "set_head": [13, 14], "setupfunct": 13, "setuptool": [1, 3], "seven": 10, "sever": [1, 11], "shall": [1, 2], "shoal": 20, "should": [1, 9, 11], "sign": 14, "similar": [1, 6, 9], "simpl": [1, 4, 11], "simpli": [1, 9], "sinc": [1, 9], "singl": [1, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "site": [1, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "sitenum": [1, 11, 19, 20], "size": [1, 12], "small": [1, 12], "so": [1, 4, 9, 14, 15, 16, 17, 20, 21], "so2": [17, 20, 21], "softwar": [1, 2], "some": [1, 11, 12, 14], "sometim": [1, 11], "sourc": [1, 9], "south": [1, 11, 15, 18], "specif": [1, 2, 11, 15, 16, 17, 20, 21], "specifi": [1, 8, 11, 14], "sphinx": 14, "stall": [1, 4], "stamp": 14, "standard": [17, 18, 21], "start": [1, 12], "state": [1, 2, 4, 10, 11, 14, 17, 20, 21], "statefip": [1, 8, 11, 14, 15, 17, 19, 20, 21], "statist": [10, 12, 14, 16, 17, 20, 21], "statu": [1, 11, 14], "status_cod": 14, "still": [1, 3], "store": [1, 9, 11, 14], "str": [14, 15, 16, 17, 18, 19, 20, 21], "string": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "submiss": [1, 10, 11, 17, 18, 19, 20, 21], "submit": [1, 12, 17, 18, 21], "submodul": [1, 11, 13], "subpackag": 13, "success": [1, 9, 15, 16, 17, 20, 21], "suggest": [1, 12], "summar": [1, 11], "summari": [1, 10, 11, 15, 16, 17, 20, 21], "suppli": [1, 8, 9], "sure": [1, 5], "system": [1, 2, 4, 11, 14], "tabl": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "take": [1, 9, 10, 11, 15, 16, 17, 20, 21], "task": [1, 12], "tempor": [1, 12], "term": [1, 12], "territori": 14, "text": [1, 9], "than": [1, 6, 11, 12, 15], "thei": [1, 8, 11, 12], "them": [1, 4, 8, 12], "thi": [1, 2, 4, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "thirteen": 10, "those": [1, 9], "though": [1, 12], "three": [1, 11], "through": [1, 11, 14], "thrown": 14, "time": [1, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "timefram": [16, 21], "todai": [1, 7], "total": [1, 11], "toward": [1, 7], "trademark": [1, 2], "transact": [1, 10, 11, 17, 18, 19, 20, 21], "transactionsampl": [1, 10, 11, 13, 14, 17, 18, 20, 21], "transfer": [1, 4], "transport": [1, 11, 17, 18, 19, 20, 21], "treat": [1, 9], "true": [1, 4, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21], "truro": 20, "twice": [1, 11], "two": [1, 11, 15], "txt": [1, 3], "type": [1, 11, 14, 15, 16, 17, 18, 19, 20, 21], "u": [1, 2, 4, 9, 10, 11, 14], "unexpect": [1, 8], "unexpos": [1, 11, 17, 18, 19, 20, 21], "unit": [1, 2, 4, 17, 18, 21], "unsur": [1, 12], "up": [12, 14], "updat": [1, 11, 16, 17, 18, 19, 20, 21], "upload": [1, 11], "url": [1, 14], "us": [2, 3, 6, 7, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21], "usabl": [1, 4], "usag": 14, "usepa": [1, 2, 3], "user": [2, 4, 11, 12, 14], "usernam": [1, 9, 11, 14], "usual": [1, 11, 14], "util": [1, 2], "v2": [1, 2, 4], "valid": [1, 9, 11, 14, 15, 16, 17, 20, 21], "valu": [1, 8, 11, 12, 14, 15, 16, 17, 20, 21], "variabl": [9, 15, 16, 17, 18, 19, 20, 21], "variou": [1, 11], "verif": [1, 10, 11, 14, 16, 17, 18, 19, 20, 21], "verifi": [1, 11], "version": 1, "via": [1, 4, 11, 12, 14], "vicin": 15, "virtual": [1, 5], "vulner": [1, 4], "wa": [1, 2, 5, 11, 14, 16, 17, 18, 19, 20, 21], "wai": [1, 12], "wait": [1, 12, 15, 16, 17, 20, 21], "wake": [17, 20], "want": [1, 9, 11], "warn": 14, "warranti": [1, 2], "we": [1, 12], "week": [1, 11], "welcom": 1, "were": [16, 17, 20, 21], "west": [1, 11, 15], "what": 14, "wheen": [1, 11], "when": [1, 9, 11, 12, 16, 17, 18, 19, 20, 21], "where": [1, 5, 10, 15, 16, 17, 18, 19, 20, 21], "which": [1, 4, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21], "while": [1, 3], "who": [1, 9], "whole": 20, "within": [1, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21], "without": [1, 2, 9, 12], "work": [1, 7, 12], "would": [1, 9], "year": [1, 4, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21], "yearli": [1, 11], "you": [1, 5, 6, 9, 12], "your": [1, 12, 14], "yourself": [1, 12], "zero": [1, 8, 11, 14, 16, 17, 18, 19, 20, 21]}, "titles": ["Index", "pyaqsapi user documentation", "EPA Disclaimer", "Install pyaqsapi", "Introduction", "Load pyaqsapi", "About RAQSAPI", "About the timeliness of AQS Data", "Troubleshooting", "Using pyaqsapi", "Data Mart aggregate functions", "Functions Exported by pyaqsapi", "Usage tips and precautions", "pyaqsapi", "pyaqsapi package", "pyaqsapi.bybox package", "pyaqsapi.bycbsa package", "pyaqsapi.bycounty package", "pyaqsapi.byma package", "pyaqsapi.bypqao package", "pyaqsapi.bysite package", "pyaqsapi.bystate package"], "titleterms": {"about": [1, 6, 7], "agenc": [1, 11], "aggreg": [1, 10, 11], "api": [1, 11], "aq": [1, 2, 7], "area": [1, 11], "assur": [1, 11], "base": [1, 11], "bound": [1, 11], "box": [1, 11], "bybox": [1, 11, 15], "bycbsa": 16, "bycounti": [1, 11, 17], "byma": 18, "bypqao": 19, "bysit": [1, 11, 20], "bystat": [1, 11, 21], "cbsa": [1, 11], "core": [1, 11], "credenti": [1, 9, 11], "data": [1, 7, 10, 11], "datamart": [1, 2], "descript": [1, 11], "disclaim": [1, 2], "document": 1, "epa": [1, 2], "export": [1, 11], "famili": [1, 11], "function": [1, 10, 11], "helperfunct": 14, "index": [0, 1], "instal": [1, 3], "introduct": [1, 4], "latitud": [1, 11], "librari": [1, 9], "list": [1, 11], "listfunct": 14, "load": [1, 5], "longitud": [1, 11], "ma": [1, 11], "mart": [1, 10, 11], "metadata": [1, 11], "metadatafunct": 14, "miscellan": [1, 11], "modul": [14, 15, 16, 17, 18, 19, 20, 21], "monitor": [1, 11], "organ": [1, 11], "packag": [14, 15, 16, 17, 18, 19, 20, 21], "pqao": [1, 11], "precaut": [1, 12], "primari": [1, 11], "pyaqsapi": [1, 3, 5, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21], "qualiti": [1, 11], "raqsapi": [1, 6], "refer": 1, "set": [1, 9], "setupfunct": 14, "sign": [1, 9, 11], "statist": [1, 11], "submodul": [14, 15, 16, 17, 18, 19, 20, 21], "subpackag": 14, "timeli": [1, 7], "tip": [1, 12], "troubleshoot": [1, 8], "up": [1, 9, 11], "us": [1, 9], "usag": [1, 11, 12], "user": [1, 9], "variabl": [1, 11]}}) \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index ccdc023..4c0655e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -33,7 +33,9 @@ "sphinxcontrib.apidoc", "sphinx.ext.doctest", "sphinx.ext.coverage", - "sphinxcontrib.spelling", + # the dependencies required for sphinxcontrib.spelling + # do not seem to be maintained anymore + # "sphinxcontrib.spelling", "numpydoc", "sphinx.ext.napoleon", "sphinxcontrib.bibtex", @@ -49,12 +51,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [ - "_build", - "Thumbs.db", - ".DS_Store", - "setup.py", -] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "setup.py"] # get rid of those duplicate label warnings when embedding a child rst file # into another rst file. @@ -87,17 +84,19 @@ napoleon_google_docstring = True # napoleon_numpy_docstring = True +# the dependencies required for sphinxcontrib.spelling +# do not seem to be maintained anymore # -- Options for sphinxcontrib-spelling --------------------------------------- -spelling_lang = "en_US" -tokenizer_lang = "en_US" -spelling_word_list_filename = "ignored_wordlist.txt" -spelling_show_suggestions = True -spelling_show_whole_line = True -spelling_warning = True -spelling_verbose = True -spelling_ignore_pypi_package_names = True -spelling_ignore_python_builtins = True -spelling_ignore_contributor_names = True +# spelling_lang = "en_US" +# tokenizer_lang = "en_US" +# spelling_word_list_filename = "ignored_wordlist.txt" +# spelling_show_suggestions = True +# spelling_show_whole_line = True +# spelling_warning = True +# spelling_verbose = True +# spelling_ignore_pypi_package_names = True +# spelling_ignore_python_builtins = True +# spelling_ignore_contributor_names = True # -- Options for numpydoc ----------------------------------------------------- numpydoc_show_class_members = False diff --git a/meta.yaml b/meta.yaml index 7607778..11947f2 100644 --- a/meta.yaml +++ b/meta.yaml @@ -54,7 +54,9 @@ test: - python > = 3.8 - pytest - pip - - sphinxcontrib-spelling + # the dependencies required for sphinxcontrib.spelling + # do not seem to be maintained anymore + # - sphinxcontrib-spelling - tox - pytest-black - codecov diff --git a/requirements.txt b/requirements.txt index 7d86bcb..bb24612 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,9 @@ setuptools>=42 sphinx>=5.0 #sphinxcontrib-napoleon sphinxcontrib-apidoc -sphinxcontrib-spelling +# the dependencies required for sphinxcontrib.spelling +# do not seem to be maintained anymore +# sphinxcontrib-spelling sphinxcontrib-bibtex toml sphinx_rtd_theme diff --git a/setup.cfg b/setup.cfg index 69c7faf..f80f260 100644 --- a/setup.cfg +++ b/setup.cfg @@ -48,6 +48,8 @@ docs = sphinx sphinxcontrib-napoleon sphinxcontrib-apidoc - sphinxcontrib-spelling + # the dependencies required for sphinxcontrib.spelling + # do not seem to be maintained anymore + # sphinxcontrib-spelling sphinx_rtd_theme sphinxcontrib-bibtex \ No newline at end of file diff --git a/tox.ini b/tox.ini index 596a5c1..63e7eb7 100644 --- a/tox.ini +++ b/tox.ini @@ -15,7 +15,9 @@ requires = tox-conda [testenv] deps = pytest - sphinxcontrib-spelling + # the dependencies required for sphinxcontrib.spelling + # do not seem to be maintained anymore + # sphinxcontrib-spelling commands = pytest conda_deps = pytest