https://github.com/athenarc/timevizbench

An interactive evaluation platform for scalable time series visualization methods across performance and accuracy dimensions.

https://github.com/athenarc/timevizbench

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.3%) to scientific vocabulary

Keywords

benchmarking series time visualization
Last synced: 5 months ago · JSON representation

Repository

An interactive evaluation platform for scalable time series visualization methods across performance and accuracy dimensions.

Basic Info
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
benchmarking series time visualization
Created about 1 year ago · Last pushed 11 months ago
Metadata Files
Readme License

README.md

TimeVizBench

An interactive evaluation platform for scalable time series visualization methods across performance and accuracy dimensions.

Prerequisites

  • Java 17
  • Maven
  • Node.js
  • Docker & Docker Compose

Getting the Code

  1. Clone the Repository bash git clone https://github.com/athenarc/TimeVizBench.git
  2. Navigate into the repository: bash cd TimeVizBench

Local Development

1. Build the Backend

  • Go to the backend directory: bash cd backend

  • Run Maven to package the Spring Boot application: bash mvn clean install

  • A .jar file (e.g., time-viz-bench-1.0.jar) will appear in the target directory.

2. Start the Spring Boot Backend

bash java -jar target/time-viz-bench-1.0.jar The backend will now run and wait for requests.

3. Install and Start the Frontend

  • Navigate to the frontend directory: bash cd ../frontend
  • Install dependencies (if not already done): bash npm install
  • Start the development server: bash npm start

4. Run NGINX via Docker

In a new terminal, from the frontend folder, run: bash docker compose up -d This spins up an NGINX container configured to serve the application.

5. Access the Application

Open your browser at:

http://localhost:9090

The frontend should communicate with the locally running backend.


Deployment (Using Docker)

1. Build and run the Backend

From the project root, navigate to backend: bash cd backend mvn clean install java -jar target/time-viz-bench-1.0.jar

2. Prepare the Frontend

Go to the frontend folder from the project root: bash cd frontend

3. Copy Environment and Configuration TemplatesInside the frontend folder, you’ll see the .env.example file and a templates directory:

bash cp .env.example .env cp templates/dev.conf.template templates/default.conf.template This sets up your environment variables and the development NGINX config.

4. Build the Frontend for Production

bash npm run build This compiles the frontend into production-ready static files.

5. Start Containers with Docker Compose

Still in the frontend directory (where your docker-compose.yml resides), run: bash docker compose up -d This will launch the backend container (using the .jar built in step 1) and the NGINX container (to serve the newly built frontend).

6. Verify the Deployment

Visit:

http://localhost:9090

You should see the application running in its containerized form (backend + frontend via NGINX).

Creating a Visual Method

TimeVizBench automatically discovers and registers visual methods. Once implemented, they become available in the UI with auto-generated parameter controls.

1. Create a New Method Class

```java @VisualMethod( name = "ExampleAverage", description = "An example method that computes averages over time intervals" ) public class SimpleAverageMethod implements Method {

// Parameters automatically appear as UI controls
// This is a query parameter that decides the agg. interval
@Parameter(
   name = "Interval (ms)",
    description = "The aggregation interval in milliseconds",
    min = 1000,
    max = 12000000000L,
    step = 10000,
    defaultValue = 10000, 
    isQueryParameter = true
)
private long interval;

} ```

2. Implement Required Methods

The method interface requires two main methods:

```java // Handles method initialization @Override public void initialize(String schema, String datasetId, DatasourceConnector datasourceConnector, Map params) { // Validation and setup logic }

// Processes visualization queries @Override public VisualQueryResults executeQuery(VisualQuery query) { // Query processing logic } ```

3. Ready to Use

  • Place your implementation in the methods package
  • The system automatically:
    • Discovers the method via @VisualMethod annotation
    • Creates UI controls based on @Parameter annotations
    • Makes the method available in the visualization interface
    • Handles parameter validation and query execution

See SimpleAverageMethod.java for a complete reference implementation.

Owner

  • Name: ATHENA RC
  • Login: athenarc
  • Kind: organization
  • Email: github@athenarc.gr
  • Location: Athens, Greece

ATHENA Research & Innovation Information Technologies

GitHub Events

Total
  • Watch event: 1
  • Member event: 4
  • Push event: 20
  • Create event: 8
Last Year
  • Watch event: 1
  • Member event: 4
  • Push event: 20
  • Create event: 8

Dependencies

backend/Dockerfile docker
  • openjdk 17-jdk-slim build
frontend/docker-compose.local.yml docker
  • nginx 1.27
frontend/docker-compose.yml docker
  • nginx 1.27
backend/pom.xml maven
  • ch.qos.logback:logback-classic 1.4.14
  • com.beust:jcommander 1.82
  • com.google.guava:guava 33.3.1-jre
  • com.h2database:h2 2.3.232
  • com.influxdb:influxdb-client-java 6.7.0
  • com.opencsv:opencsv 5.9
  • com.univocity:univocity-parsers 2.9.1
  • it.unimi.dsi:fastutil 8.5.12
  • javax.validation:validation-api 2.0.1.Final
  • org.apache.commons:commons-lang3 3.12.0
  • org.apache.commons:commons-math3 3.6.1
  • org.postgresql:postgresql 42.7.4
  • org.reflections:reflections 0.10.2
  • org.springframework.boot:spring-boot-starter-data-jpa 3.3.4
  • org.springframework.boot:spring-boot-starter-logging 3.3.4
  • org.springframework.boot:spring-boot-starter-web 3.3.4
  • org.springframework.security:spring-security-config 6.3.3
  • org.springframework.security:spring-security-core 6.3.3
  • org.springframework.security:spring-security-oauth2-jose 6.3.3
  • org.springframework.security:spring-security-oauth2-resource-server 6.3.3
  • junit:junit 4.13.2 test
frontend/package.json npm
  • @types/d ^1.0.4 development
  • @emotion/react ^11.13.3
  • @emotion/styled ^11.13.0
  • @mui/icons-material ^6.1.4
  • @mui/material ^6.1.4
  • @mui/x-charts ^7.24.0
  • @mui/x-date-pickers ^7.22.3
  • @reduxjs/toolkit ^2.5.1
  • @testing-library/jest-dom ^5.17.0
  • @testing-library/react ^13.4.0
  • @testing-library/user-event ^13.5.0
  • @types/jest ^27.5.2
  • @types/node ^16.18.112
  • @types/react ^18.3.11
  • @types/react-dom ^18.3.0
  • axios ^1.7.7
  • d3 ^7.9.0
  • dayjs ^1.11.13
  • image-ssim ^0.2.0
  • notistack ^3.0.1
  • react ^18.3.1
  • react-cookie ^7.2.1
  • react-dom ^18.3.1
  • react-hot-toast ^2.4.1
  • react-redux ^9.2.0
  • react-router-dom ^6.27.0
  • react-scripts ^5.0.1
  • typescript ^4.9.5
  • use-debounce ^10.0.4
  • web-vitals ^2.1.4