Prerequisites
To run Temporal RectEuler, you need the following prerequisites:
- Docker: Docker must be installed and running on your system. Docker provides containerization that ensures consistent execution across different environments.
- Docker Compose: Docker Compose is required to orchestrate the multiple services (nginx, backend, worker, postgres, redis) that make up the application.
- Gurobi License: A Gurobi WSL (Web Service License) is required to run the optimization. For academic use, it can be obtained from Gurobi's academic program.
Get Code
Access the source code on GitLab and clone the repository to your local machine.
Running the Application
Before running the application, copy your Gurobi license file gurobi.lic to the docker-files/secrets directory.
Additionally, add the file postgres_password.txt to the docker-files/secrets directory and put in it a password used for the database.
Once you have cloned the repository and set up the prerequisites, navigate to the docker-files directory and run the following command:
docker compose up
This command works identically on Windows, Mac, and Linux. Docker Compose will start all required services. Once the containers are running, open your browser and navigate to localhost to view the website and upload datasets for visualization.
Uploading Datasets
To upload a dataset, use the upload interface on the web application. Datasets must be provided in CSV format with the following structure:
- First row (header): Contains the set names, with the first cell typically being "Name" or left empty. The remaining cells contain the names of all sets (e.g.,
Council of Europe, Schengen Area, EFTA, ...) - First column: Contains element identifiers in the format
ElementName_Timestamp(e.g.,Albania_1990, Albania_1995, Austria_1990, ...). The part before the first underscore (_) is parsed as the element name, and everything after the first underscore is parsed as the timestamp. Timestamps are used to group data into different diagrams for temporal visualization. - Matrix cells: Contain
0or1values where1indicates the element (row) belongs to the set (column), and0indicates it does not.
Optionally, you can upload images and provide a configuration JSON for custom element rendering.
Example:
Name,Council of Europe,Schengen Area,EFTA,EEA,Nordic Council,...,European Union
Albania_1990,0,0,0,0,0,...,0
Albania_1995,1,0,0,0,0,...,0
Albania_2000,1,0,0,0,0,...,0
Austria_1990,1,0,1,0,0,...,0
Austria_1995,1,1,1,1,0,...,1
...