GitHub (source files):


The software requirements for each component of SmartSPEC is written provided below. Note that you only need to install the dependencies for the component that you wish to use.

Scenario Learning

The Scenario Learning component is written in Python and requires the following dependencies:

Most of these requirements can be fulfilled by using an Anaconda environment. After installing Anaconda, open the Anaconda command line and execute:

conda create --name smartspec
conda activate smartspec
conda install python-rapidjson numpy pandas matplotlib tqdm scikit-learn 
pip install ruptures mysql-connector-python

To run the Scenario Learning component afterwards, you will need to activate the smartspec environment:

conda activate smartspec
There may be some secondary dependencies that may need to be installed; please refer to the installation guides for the appropriate dependency if there are issues.

MySQL Database Setup

A local MySQL database is used as the data source for learning metaevents and metapeople. To set up the local data source:

  • Start your local MySQL service
  • Create a database named simulation_seed with a table connectivity. This can be accomplished with the following SQL script.
CREATE TABLE simulation_seed.connectivity 
    wifi_ap VARCHAR(32) NULL,
    cnx_time DATETIME NULL,
    client_id VARCHAR(64) NULL
  • Populate table by importing data. This data should be in the following form:
1,2017-01-01 07:30:31,81
9,2017-01-01 10:39:13,72
8,2017-01-01 10:40:08,72
You may need to modify the default security settings of MySQL in order to create the MySQL database (e.g., configure database user to authenticate via mysql_native_password.
  • Note, the local data queries can be optimized by setting indices as follows:
CREATE INDEX cnx_date ON simulation_seed.connectivity (cnx_time);
CREATE INDEX idx_ap ON simulation_seed.connectivity (wifi_ap);
CREATE INDEX time_and_ap ON simulation_seed.connectivity (cnx_time, wifi_ap);

Scenario Generation

The Scenario Generation component is written in C++17 and requires the following dependencies:

  • C++ (version >= 17)
  • boost (version >= 1.68.0)
  • date (included in project)
  • rapidjson (included in project)
We recommend that a Linux-based system (e.g., Ubuntu) is used to install and run this component.

GUI Toolkit

The GUI Toolkit is written in Java 8 and requires the following dependencies:

We recommend that JavaFX is installed as described in the linked URL, which details the installation process for using JavaFX with an Integrated Development Environment (IDE), or with command line build tools. The json-simple and ini4j dependencies should be downloaded as jar files.
We recommend that a Linux-based system (e.g., Ubuntu) is used to install and run this component.