Overview of Instantiating Testing Attributes

If you’ve been following the setup process outlined for creating local instances of testing attribute objects including AirSensor, ReferenceMonitor, and Parameter, this section recaps the workflow for how to utilize these sensortoolkit testing attribute objects in a python script.

This overview is divided into two sections describing the workflow for different use cases. For users starting out fresh with an empty project directory and have not run the setup modules for either sensor or reference data configurations, please review the ‘Initial Instantiation’ section below. For users who may have previously conducted an evaluation, walking through the initial workflow including creating setup configurations for both sensor and reference datasets, individuals can follow an abbreviated workflow, outlined in the ‘Instantiating from Previously Configured Objects’ section.

Initial Instantiation

If users are starting out with a new project directory or have not previously created a setup configuration for the air sensor that the user intends to evaluate, follow the script below for walking through the process of instantiating new AirSensor and ReferenceMonitor objects, including running the setup module to create setup.json files for each of these objects. Highlighted lines indicate important differences to specify when compared to subsequent instantiation of the sensor and reference objects that require use of the setup.json configuration files created during this initial use-case.

# -*- coding: utf-8 -*-
"""
Testing attribute setup process for an air sensor and reference monitor in a
new project directory (located at the project path). At the start of using
this script, users should have an empty directory in the folder located at
the project path, except for a python script that contains the commands below.

Following the use of this script, the following should be contained within
the user's project directory :

    - `/data`, `/figures`, and `/reports` directories (as well as the
      subfolder structure within the directories)
    - sensor datasets located at `/data/sensor_data/[sensor_name]`
        - raw (i.e., recorded, unmodified)
        - processed (i.e., converted to SDFS)
        - [sensor_name]_setup.json for importing, ingesting, and saving processed
          datasets in SDFS format.
    - reference datasets located at `/data/reference_data/[data_type]/[site_name_site_id]`
        - raw (i.e., recorded, unmodified)
        - processed (i.e., converted to SDFS)
        - reference_setup.json for importing, ingesting, and saving processed
          datasets in SDFS format.

"""
import sensortoolkit

sensortoolkit.presets.set_project_path('[path/to/the/evaluation]')

# AirSensor object instantiation
sensor = sensortoolkit.AirSensor(make='[Sensor Make]',
                                 model='[Sensor Model]')
# Create Data and Figures directory, subdirectories
sensor.create_directories()
# Run setup configuration for sensor data, creates setup.json file
sensor.sensor_setup()

# Import and loading sensor data for the first time, processed data files will
# be saved following ingestion.
sensor.load_data(load_raw_data=True,
                 write_to_file=True)

# Create a Parameter instance for the pollutant you wish to evaluate
pollutant = sensortoolkit.Parameter('[Insert pollutant from list of SDFS labels]')

# Loading reference object for the first time
reference = sensortoolkit.ReferenceMonitor()
reference.reference_setup()

# Load reference data for the evaluation timeframe
reference.load_data(bdate=sensor.bdate,
                    edate=sensor.edate,
                    param_list=sensor.param_headers,
                    met_data=True)

# Run SensorEvaluation or PerformanceReport here...

Instantiating from Previously Configured Objects

Users may have occasion to revise or reanalyze sensor datasets at a later date following an initial round of analysis. If users have previously configured AirSensor and ReferenceMonitor objects for a testing scenario, these configurations will be saved to the setup.json configuration files for both reference and sensor data. In addition, processed versions of sensor and reference datasets that have been converted to SDFS formatting will be have been saved during the initial analysis to the user’s /data folder within the project directory.

These previously created data structures allow users to reload previously configured AirSensor and ReferenceMonitor objects via an abbreviated workflow detailed below. Highlighted lines indicate important differences when compared to an initial instantiation of the sensor and reference objects.

# -*- coding: utf-8 -*-
"""
In the instance that users have previously run the sensor and reference
setup configuration modules and wish to utilize these configurations for
additional, follow-up analysis, users can save some time by loading processed
versions of the sensor and reference datasets that are already configured in
`SDFS` format.

Users should ensure that sensor processed datasets have been created and saved
to the user's ``/data/sensor_data/[sensor_name]/processed``
directory during a previous run of the sensor.load_data() module, and
that processed reference datasets corresponding to the reference data source
the user intends to utilize are located at
``/data/reference_data/[data_source]/processed/[site_name_site_aqs]``
"""
import sensortoolkit

sensortoolkit.presets.set_project_path('[path/to/the/evaluation]')

# AirSensor object instantiation
sensor = sensortoolkit.AirSensor(make='[Sensor Make]',
                                 model='[Sensor Model]')

# Load sensor data from processed datasets
sensor.load_data(load_raw_data=False,
                 write_to_file=False)

# Create a Parameter instance for the pollutant you wish to evaluate
pollutant = sensortoolkit.Parameter('[Insert pollutant from list of SDFS labels]')

# Loading a pre-configured reference object (must indicate source, site, site id if applicable)
reference = sensortoolkit.ReferenceMonitor(data_source='[Enter the reference data source (lower case)]',
                                           site_name='[Enter the site name (replace spaces with underscores "_")]',
                                           site_id='[Enter the site AQS ID (no spaces)]')

# Load reference data for the evaluation timeframe
reference.load_data(bdate=sensor.bdate,
                    edate=sensor.edate,
                    param_list=sensor.param_headers,
                    met_data=True)

# Run SensorEvaluation or PeformanceReport here...