Network of artificial olfactory receptors for spatiotemporal monitoring of toxic gas
Data files
Sep 30, 2024 version files 1.22 GB
-
Datasets.npy
1.22 GB
-
README.md
6.59 KB
Abstract
Excessive human exposure to toxic gases can lead to chronic lung and cardiovascular diseases. Thus, precise in-situ monitoring of toxic gases in the atmosphere is crucial. Here, we present an artificial olfactory system for spatiotemporal recognition of NO2 gas flow by integrating a network of chemical receptors with near-sensor computing. The artificial olfactory receptor features nano islands of metal-based catalysts that cover the graphene surface on the heterostructure of an AlGaN/GaN two-dimensional electron gas (2DEG) channel. Catalytically dissociated NO2 molecules bind to graphene, thereby modulating the conductivity of the 2DEG channel. For the energy/resource-efficient gas flow monitoring, Trust region Bayesian optimization algorithm allocates many sensors optimally in a complex space. Integrated artificial neural networks on a compact microprocessor with a network of sensors provide in-situ gas flow predictions. This system enhances protective measures against toxic environments through spatiotemporal monitoring of toxic gases.
This is code for the paper: Trust Region Bayesian Optimized Network of Artificial Olfactory Receptors for Spatiotemporal Monitoring of NO2 gas. The code includes tflite based file generation, dataset, test, and validation processes.
https://doi.org/10.5061/dryad.b5mkkwhnw
Description of the Data and File Structure
Trust Region Bayesian Optimized Network of Artificial Olfactory Receptors for Spatiotemporal Monitoring of NO₂ Gas
This repository contains supplementary codes and datasets for the paper:
Trust Region Bayesian Optimized Network of Artificial Olfactory Receptors for Spatiotemporal Monitoring of NO₂ Gas.
The code includes TFLite-based file generation, dataset handling, testing, and validation processes.
Note: Before starting, ensure you have Jupyter Notebook or Jupyter Lab installed for running the .ipynb
files.
Dataset
Find the attached dataset files.
Files and Variables
File: Datasets.npy
Description: Contains gas simulation datasets for the TuRBO optimization and neural network training.
The dimension of dataset is (n × 11, 4455, 3). The dataset represent the contour map of gas concentration throughout the observation space, which is 50 × 23 (m) simulative space. The ‘n’ number of observations were taken which represent each gas leakage scenarios with different gas leakage points, observed for 11 times within 1000 seconds (0, 100, 200, … , 1000). The second shape parameter (4455) represents the all points in the contour map. The last dimension 3 represents x, y, and concentration. Specifically, the first 2 of 3 contains x and y coordinate of the observation point, and the last 1 contains the concentration level.
- Shape:
(n × 11, 4455, 3)
n × 11
: Total number of observations multiplied by 11 time steps (from 0 to 1000 seconds at 100-second intervals).4455
: Number of points in the contour map.3
: Represents[x, y, concentration]
at each point.
Visualization Example:
To visualize the concentration map for the 15th observation at the 500-second timestamp, use the following code:
import numpy as np
import matplotlib.pyplot as plt
# Load the dataset
DATASET = np.load('Datasets.npy')
# Parameters
observation_number = 15 # 15th observation
time_step = 500 # Time in seconds
# Time steps in the dataset
time_steps = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
time_index = time_steps.index(time_step) # Get the index of the desired time step
# Calculate the dataset index
index = (observation_number - 1) * 11 + time_index
# Extract x, y coordinates and concentration values
x_coords = DATASET[index, :, 0]
y_coords = DATASET[index, :, 1]
concentration = DATASET[index, :, 2]
# Plotting
plt.figure(figsize=(10, 8))
scatter = plt.scatter(x_coords, y_coords, c=concentration, cmap='viridis')
plt.colorbar(scatter, label='Concentration Level')
plt.xlabel('X Coordinate (m)')
plt.ylabel('Y Coordinate (m)')
plt.title(f'Concentration Map for Observation {observation_number} at {time_step} sec')
plt.show()
File: Datalabels.npy
Description: Contains the labels for each dataset entry. This file is embedded in the code folder found on Zenodo.
- Shape:
(n × 11, 2)
- The last dimension
[2]
represents the[x, y]
coordinates of the gas leakage point.
- The last dimension
Code/Software
Basic Jupyter Notebook Setup and Run Guide
Prerequisites
Ensure you have the following installed on your system:
- Python 3.12
- pip (Python package installer)
Installation
-
Install Jupyter Notebook via pip
Open your terminal (for macOS/Linux) or Command Prompt/PowerShell (for Windows) and run the following command:
pip install notebook
-
Verify Installation
To ensure Jupyter Notebook was installed correctly, run:
jupyter --version
This should display the version of Jupyter Notebook installed.
Running Jupyter Notebook
-
Start Jupyter Notebook
Navigate to the directory where your notebooks are located or where you wish to create new ones, then run:
jupyter notebook
This command will start the Jupyter Notebook server and open the interface in your default web browser.
- Create a New Notebook
- In the Jupyter Notebook interface, click the “New” button at the top right and select “Python 3” to create a new notebook.
- Using Jupyter Notebook
- Running Cells: Write Python code in the cells and run them interactively by pressing Shift + Enter.
- Managing Cells: Add new cells, delete cells, or change the cell type (Code or Markdown) using the toolbar.
- Save and Exit
- Save: Click the floppy disk icon in the toolbar to save your notebook.
- Exit: Close the browser tab and stop the Jupyter server in your terminal by pressing Ctrl + C.
Additional Resources
For more detailed instructions and advanced usage, visit the Jupyter Project Documentation.
Run the Code
1. Run BO_Gas_sensor_T9_EI-TurBO_10.ipynb
This notebook performs Bayesian Optimization to generate an optimized neural network and positions 10 sensors in optimized regions for better gas detection.
Steps:
- Open the notebook in Jupyter.
- Run each cell sequentially by pressing
Shift + Enter
. - The notebook includes code for data loading, preprocessing, optimization, and visualization.
2. Run SPresense_TF_GAS.ino
This code sets the Sony SPresense microprocessor into listening mode for gas concentration data.
Instructions:
- Setup: Refer to the following resources for detailed settings and environment setup:
- Upload: Use the Arduino IDE or Sony’s development environment to upload the
.ino
file to the SPresense board.
3. Run BO_Gas_sensor_T9_Neural_Network_verify_Board.ipynb
This notebook trains and validates the neural network based on the sensor positions generated by the Bayesian Optimization.
Steps:
- Open the notebook in Jupyter.
- Ensure that the optimized sensor positions from the previous steps are correctly loaded.
- Run the training and validation cells to evaluate the neural network’s performance.
Access Information
Other publicly accessible locations of the data:
Data was derived from the following sources:
- None