From b4a6f8ad2cb12012402f573c1d3b531fccd61a65 Mon Sep 17 00:00:00 2001
From: Mia Wang <yw21218@ic.ac.uk>
Date: Tue, 26 Apr 2022 18:52:51 +0100
Subject: [PATCH] more commit again

---
 .gitignore                                   |   8 +-
 backend_react/.flaskenv                      |   3 -
 backend_react/child_networks/CIFAR100_v1.txt |   1 -
 backend_react/child_networks/CIFAR100_v2.txt |   1 -
 backend_react/child_networks/place_holder    |   0
 backend_react/policy.txt                     |   1 -
 backend_react/react_app.py                   | 166 --------
 package.json                                 |  50 ---
 public/favicon.ico                           | Bin 3870 -> 0 bytes
 public/index.html                            |  43 --
 public/logo192.png                           | Bin 5347 -> 0 bytes
 public/logo512.png                           | Bin 9664 -> 0 bytes
 public/manifest.json                         |  25 --
 {backend_react => react_backend}/__init__.py |   0
 setupProxy.js                                |  11 -
 src/App.css                                  |  38 --
 src/App.js                                   |  50 ---
 src/App.test.js                              |   8 -
 src/components/pytest.png                    | Bin 8124 -> 0 bytes
 src/index.css                                |  13 -
 src/index.js                                 |  17 -
 src/logo.svg                                 |   1 -
 src/pages/Confirm.js                         | 113 ------
 src/pages/Home.js                            | 394 -------------------
 src/pages/Progress.js                        |  69 ----
 src/pages/Result.js                          |  61 ---
 src/pages/WrongDS.js                         |   0
 src/pages/pytest.png                         | Bin 8124 -> 0 bytes
 src/reportWebVitals.js                       |  13 -
 src/setupTests.js                            |   5 -
 test/web_app/test_flask_routes.py            |   2 +-
 31 files changed, 7 insertions(+), 1086 deletions(-)
 delete mode 100644 backend_react/.flaskenv
 delete mode 100644 backend_react/child_networks/CIFAR100_v1.txt
 delete mode 100644 backend_react/child_networks/CIFAR100_v2.txt
 delete mode 100644 backend_react/child_networks/place_holder
 delete mode 100644 backend_react/policy.txt
 delete mode 100644 backend_react/react_app.py
 delete mode 100644 package.json
 delete mode 100644 public/favicon.ico
 delete mode 100644 public/index.html
 delete mode 100644 public/logo192.png
 delete mode 100644 public/logo512.png
 delete mode 100644 public/manifest.json
 rename {backend_react => react_backend}/__init__.py (100%)
 delete mode 100644 setupProxy.js
 delete mode 100644 src/App.css
 delete mode 100644 src/App.js
 delete mode 100644 src/App.test.js
 delete mode 100644 src/components/pytest.png
 delete mode 100644 src/index.css
 delete mode 100644 src/index.js
 delete mode 100644 src/logo.svg
 delete mode 100644 src/pages/Confirm.js
 delete mode 100644 src/pages/Home.js
 delete mode 100644 src/pages/Progress.js
 delete mode 100644 src/pages/Result.js
 delete mode 100644 src/pages/WrongDS.js
 delete mode 100644 src/pages/pytest.png
 delete mode 100644 src/reportWebVitals.js
 delete mode 100644 src/setupTests.js

diff --git a/.gitignore b/.gitignore
index 0370b9f7..0ffad1fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -177,7 +177,7 @@ cifar-10-python.tar.gz
 /coverage
 
 # production
-/build
+# /build
 
 # misc
 .DS_Store
@@ -203,4 +203,8 @@ celerybeat.pid
 *.sage.py
 
 **/test
-**/train
\ No newline at end of file
+**/train
+
+# user uplaod
+/react_backend/child_networks
+/react_backend/policy.txt
\ No newline at end of file
diff --git a/backend_react/.flaskenv b/backend_react/.flaskenv
deleted file mode 100644
index 89ab8b9b..00000000
--- a/backend_react/.flaskenv
+++ /dev/null
@@ -1,3 +0,0 @@
-FLASK_APP=react_app.py
-FLASK_ENV=development
-FLASK_DEBUG=1 flask run --no-reload
\ No newline at end of file
diff --git a/backend_react/child_networks/CIFAR100_v1.txt b/backend_react/child_networks/CIFAR100_v1.txt
deleted file mode 100644
index 36dc2c4e..00000000
--- a/backend_react/child_networks/CIFAR100_v1.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.2093,0.2211,0.2119,0.2104,0.2115,0.2079,0.2094,0.2219,0.218,0.2188
\ No newline at end of file
diff --git a/backend_react/child_networks/CIFAR100_v2.txt b/backend_react/child_networks/CIFAR100_v2.txt
deleted file mode 100644
index d9a62099..00000000
--- a/backend_react/child_networks/CIFAR100_v2.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.19934545454545455,0.19519090909090908,0.19935454545454545,0.19381818181818183,0.18769999999999998,0.19858181818181822,0.19459090909090906,0.18030000000000002,0.17654545454545453,0.2042909090909091
\ No newline at end of file
diff --git a/backend_react/child_networks/place_holder b/backend_react/child_networks/place_holder
deleted file mode 100644
index e69de29b..00000000
diff --git a/backend_react/policy.txt b/backend_react/policy.txt
deleted file mode 100644
index ba1f82e0..00000000
--- a/backend_react/policy.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.7018545454545454,0.6530636363636364,0.6565090909090909,0.7029727272727273,0.6615000000000001,0.6610181818181818,0.6333545454545454,0.6617909090909091,0.6584636363636364,0.6933909090909091
\ No newline at end of file
diff --git a/backend_react/react_app.py b/backend_react/react_app.py
deleted file mode 100644
index dea4b617..00000000
--- a/backend_react/react_app.py
+++ /dev/null
@@ -1,166 +0,0 @@
-from dataclasses import dataclass
-from flask import Flask, request, current_app, send_file
-# from flask_cors import CORS
-import os
-import zipfile
-
-import torch
-from numpy import save, load
-import temp_util.wapp_util as wapp_util
-import time
-
-import os
-import sys
-sys.path.insert(0, os.path.abspath('..'))
-torch.manual_seed(0)
-
-print('@@@ import successful')
-
-app = Flask(__name__)
-
-
-# it is used to collect user input and store them in the app
-@app.route('/home', methods=["GET", "POST"])
-def get_form_data():
-    print('@@@ in Flask Home')
-    # form_data = request.get_json() 
-    # form_data = request.files['ds_upload'] 
-    # print('@@@ form_data', form_data) 
- 
-    form_data = request.form
-    print('@@@ this is form data', form_data)
-
-    # required input
-    ds = form_data['select_dataset'] # pick dataset (MNIST, KMNIST, FashionMNIST, CIFAR10, CIFAR100)
-    IsLeNet = form_data["select_network"]   # using LeNet or EasyNet or SimpleNet ->> default 
-    auto_aug_learner = form_data["select_learner"] # augmentation methods to be excluded
-
-    print('@@@ required user input:', 'ds', ds, 'IsLeNet:', IsLeNet, 'auto_aug_leanrer:',auto_aug_learner)
-    # advanced input
-    if form_data['batch_size'] != 'undefined': 
-        batch_size = form_data['batch_size']       # size of batch the inner NN is trained with
-    else: 
-        batch_size = 1 # this is for demonstration purposes
-    if form_data['learning_rate'] != 'undefined': 
-        learning_rate =  form_data['learning_rate']  # fix learning rate
-    else: 
-        learning_rate = 10-1
-    if form_data['toy_size'] != 'undefined': 
-        toy_size = form_data['toy_size']      # total propeortion of training and test set we use
-    else: 
-        toy_size = 1 # this is for demonstration purposes
-    if form_data['iterations'] != 'undefined': 
-        iterations = form_data['iterations']      # total iterations, should be more than the number of policies
-    else: 
-        iterations = 10
-    exclude_method = form_data['select_action']
-    print('@@@ advanced search: batch_size:', batch_size, 'learning_rate:', learning_rate, 'toy_size:', toy_size, 'iterations:', iterations, 'exclude_method', exclude_method)
-    
-
-    # default values 
-    max_epochs = 10      # max number of epochs that is run if early stopping is not hit
-    early_stop_num = 10   # max number of worse validation scores before early stopping is triggered
-    num_policies = 5      # fix number of policies
-    num_sub_policies = 5  # fix number of sub-policies in a policy
-    
-    
-    # if user upload datasets and networks, save them in the database
-    if ds == 'Other':
-        ds_folder = request.files['ds_upload'] 
-        print('!!!ds_folder', ds_folder)
-        ds_name_zip = ds_folder.filename
-        ds_name = ds_name_zip.split('.')[0]
-        ds_folder.save('./datasets/'+ ds_name_zip)
-        with zipfile.ZipFile('./datasets/'+ ds_name_zip, 'r') as zip_ref:
-            zip_ref.extractall('./datasets/upload_dataset/')
-        if not current_app.debug:
-            os.remove(f'./datasets/{ds_name_zip}')
-    else: 
-        ds_name_zip = None
-        ds_name = None
-
-    # test if uploaded dataset meets the criteria 
-    for (dirpath, dirnames, filenames) in os.walk(f'./datasets/upload_dataset/{ds_name}/'):
-        for dirname in dirnames:
-            if dirname[0:6] != 'class_':
-                return None # neet to change render to a 'failed dataset webpage'
-
-    # save the user uploaded network
-    if IsLeNet == 'Other':
-        childnetwork = request.files['network_upload']
-        childnetwork.save('./child_networks/'+childnetwork.filename)
-        network_name = childnetwork.filename
-    else: 
-        network_name = None
-
-    
-    print("@@@ user input has all stored in the app")
-
-    data = {'ds': ds, 'ds_name': ds_name_zip, 'IsLeNet': IsLeNet, 'network_name': network_name,
-            'auto_aug_learner':auto_aug_learner, 'batch_size': batch_size, 'learning_rate': learning_rate, 
-            'toy_size':toy_size, 'iterations':iterations, 'exclude_method': exclude_method, }
-
-    current_app.config['data'] = data
-    
-    print('@@@ all data sent', current_app.config['data'])
-
-    # try this if you want it might work, it might not
-    # wapp_util.parse_users_learner_spec(
-    #                         num_policies,
-    #                         num_sub_policies,
-    #                         early_stop_num,
-    #                         max_epochs,
-    #                         **data,
-    #                         )
-
-    return {'data': 'all stored'}
-
-
-
-
-# ========================================================================
-@app.route('/confirm', methods=['POST', 'GET'])
-def confirm():
-    print('inside confirm page')
-    data = current_app.config['data']
-    return data
-
-
-
-
-# ========================================================================
-@app.route('/training', methods=['POST', 'GET'])
-def training():
-
-    # default values 
-    max_epochs = 10      # max number of epochs that is run if early stopping is not hit
-    early_stop_num = 10   # max number of worse validation scores before early stopping is triggered
-    num_policies = 5      # fix number of policies
-    num_sub_policies = 5  # fix number of sub-policies in a policy
-    data = current_app.config.get('data')
-
-    # fake training
-    print('pretend it is training')
-    time.sleep(3)
-    print('epoch: 1')
-    time.sleep(3)
-    print('epoch: 2')
-    time.sleep(3) 
-    print('epoch: 3')
-    print('it has finished training')
-
-    return {'status': 'Training is done!'}
-
-
-# ========================================================================
-@app.route('/result')
-def show_result():
-    file_path = "./policy.txt"
-    f = open(file_path, "r")
-    return send_file(file_path, as_attachment=True)
-
-
-
-
-if __name__ == '__main__':
-    app.run(debug=False, use_reloader=False)
\ No newline at end of file
diff --git a/package.json b/package.json
deleted file mode 100644
index ada7219e..00000000
--- a/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "name": "react_app_metarl",
-  "version": "0.1.0",
-  "private": true,
-  "proxy": "http://localhost:5000",
-  "dependencies": {
-    "@emotion/react": "^11.9.0",
-    "@emotion/styled": "^11.8.1",
-    "@mui/icons-material": "^5.6.2",
-    "@mui/material": "^5.6.2",
-    "@mui/styled-engine-sc": "^5.6.1",
-    "@testing-library/jest-dom": "^5.16.4",
-    "@testing-library/react": "^13.1.1",
-    "@testing-library/user-event": "^13.5.0",
-    "axios": "^0.26.1",
-    "js-file-download": "^0.4.12",
-    "react": "^18.0.0",
-    "react-dom": "^18.0.0",
-    "react-hook-form": "^7.30.0",
-    "react-router-dom": "^6.3.0",
-    "react-scripts": "^5.0.1",
-    "styled-components": "^5.3.5",
-    "web-vitals": "^2.1.4"
-  },
-  "scripts": {
-    "start": "react-scripts start",
-    "start-backend": "cd backend && env/bin/flask run --no-debugger",
-    "build": "react-scripts build",
-    "test": "react-scripts test",
-    "eject": "react-scripts eject"
-  },
-  "eslintConfig": {
-    "extends": [
-      "react-app",
-      "react-app/jest"
-    ]
-  },
-  "browserslist": {
-    "production": [
-      ">0.2%",
-      "not dead",
-      "not op_mini all"
-    ],
-    "development": [
-      "last 1 chrome version",
-      "last 1 firefox version",
-      "last 1 safari version"
-    ]
-  }
-}
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3870
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
ZtMWJ#1p_C<F-T5Hu2|;y@Dg%;1puB)gNgtE

diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 1c1e3f68..00000000
--- a/public/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8" />
-    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
-    <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="theme-color" content="#000000" />
-    <meta
-      name="description"
-      content="Web site created using create-react-app"
-    />
-    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
-    <!--
-      manifest.json provides metadata used when your web app is installed on a
-      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-    -->
-    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
-    <!--
-      Notice the use of %PUBLIC_URL% in the tags above.
-      It will be replaced with the URL of the `public` folder during the build.
-      Only files inside the `public` folder can be referenced from the HTML.
-
-      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
-      work correctly both with client-side routing and a non-root public URL.
-      Learn how to configure a non-root public URL by running `npm run build`.
-    -->
-    <title>MetaRL for AutoAugmentation</title>
-  </head>
-  <body>
-    <noscript>You need to enable JavaScript to run this app.</noscript>
-    <div id="root"></div>
-    <!--
-      This HTML file is a template.
-      If you open it directly in the browser, you will see an empty page.
-
-      You can add webfonts, meta tags, or analytics to this file.
-      The build step will place the bundled scripts into the <body> tag.
-
-      To begin the development, run `npm start` or `yarn start`.
-      To create a production bundle, use `npm run build` or `yarn build`.
-    -->
-  </body>
-</html>
diff --git a/public/logo192.png b/public/logo192.png
deleted file mode 100644
index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5347
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

diff --git a/public/logo512.png b/public/logo512.png
deleted file mode 100644
index a4e47a6545bc15971f8f63fba70e4013df88a664..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9664
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
Q-2sVvy85}Sb4q9e0RM_kJ^%m!

diff --git a/public/manifest.json b/public/manifest.json
deleted file mode 100644
index 080d6c77..00000000
--- a/public/manifest.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "short_name": "React App",
-  "name": "Create React App Sample",
-  "icons": [
-    {
-      "src": "favicon.ico",
-      "sizes": "64x64 32x32 24x24 16x16",
-      "type": "image/x-icon"
-    },
-    {
-      "src": "logo192.png",
-      "type": "image/png",
-      "sizes": "192x192"
-    },
-    {
-      "src": "logo512.png",
-      "type": "image/png",
-      "sizes": "512x512"
-    }
-  ],
-  "start_url": ".",
-  "display": "standalone",
-  "theme_color": "#000000",
-  "background_color": "#ffffff"
-}
diff --git a/backend_react/__init__.py b/react_backend/__init__.py
similarity index 100%
rename from backend_react/__init__.py
rename to react_backend/__init__.py
diff --git a/setupProxy.js b/setupProxy.js
deleted file mode 100644
index 0b021257..00000000
--- a/setupProxy.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const { createProxyMiddleware } = require('http-proxy-middleware');
-
-module.exports = function(app) {
-  app.use(
-    '/api',
-    createProxyMiddleware({
-      target: 'http://localhost:3000',
-      changeOrigin: true,
-    })
-  );
-};
\ No newline at end of file
diff --git a/src/App.css b/src/App.css
deleted file mode 100644
index 74b5e053..00000000
--- a/src/App.css
+++ /dev/null
@@ -1,38 +0,0 @@
-.App {
-  text-align: center;
-}
-
-.App-logo {
-  height: 40vmin;
-  pointer-events: none;
-}
-
-@media (prefers-reduced-motion: no-preference) {
-  .App-logo {
-    animation: App-logo-spin infinite 20s linear;
-  }
-}
-
-.App-header {
-  background-color: #282c34;
-  min-height: 100vh;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  font-size: calc(10px + 2vmin);
-  color: white;
-}
-
-.App-link {
-  color: #61dafb;
-}
-
-@keyframes App-logo-spin {
-  from {
-    transform: rotate(0deg);
-  }
-  to {
-    transform: rotate(360deg);
-  }
-}
diff --git a/src/App.js b/src/App.js
deleted file mode 100644
index 15ae0907..00000000
--- a/src/App.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import Home from './pages/Home'
-import Confirm from './pages/Confirm'
-import Progress from './pages/Progress'
-import Result from './pages/Result'
-import './App.css';
-import React, { useState, useEffect } from "react";
-import axios from "axios";
-import {BrowserRouter, Route, Routes, Switch} from 'react-router-dom';
-
-function App() {
-  // useEffect(() => {
-  //   console.log('print here')
-  //   fetch('/home', {
-  //     method: 'POST',
-  //     headers: { 'Content-Type': 'application/json' },
-  //     body: JSON.stringify({ })
-  //   })
-  //     .then((response) => response.text())
-  //     .then((data) => console.log('data', data));
-  // }, []);
-
-  // useEffect(() => {
-  //   fetch('/api').then(response =>{
-  //     if(response.ok){
-  //       return response.json()
-  //     }
-  //   }).then(data => console.log('api', data))
-  // }, [])
-
-  return (
-    <div>
-      {/* <Home /> */}
-      {/* <Confirm /> */}
-      {/* <Progress /> */}
-      {/* <Result /> */}
-      <BrowserRouter>
-        <Routes>
-          <Route exact path="/" element={<Home/>}/>
-          <Route exact path="/confirm" element={<Confirm/>}/>
-          <Route exact path="/progress" element={<Progress/>}/>
-          <Route exact path="/result" element={<Result/>}/>
-        </Routes>
-      </BrowserRouter>
-    </div>
-  );
-
-}
-
-
-export default App;
diff --git a/src/App.test.js b/src/App.test.js
deleted file mode 100644
index c2714159..00000000
--- a/src/App.test.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { render, screen } from '@testing-library/react';
-import App from './App';
-
-test('renders learn react link', () => {
-  render(<App />);
-  const linkElement = screen.getByText(/lol react/i);
-  expect(linkElement).toBeInTheDocument();
-});
diff --git a/src/components/pytest.png b/src/components/pytest.png
deleted file mode 100644
index 272b44ed38c9107f19c99dc9a5ac38593493604f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8124
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
WneV!oSq7S$XYh3Ob6Mw<&;$Uq4ChJ!

diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index ec2585e8..00000000
--- a/src/index.css
+++ /dev/null
@@ -1,13 +0,0 @@
-body {
-  margin: 0;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
-    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
-    sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-code {
-  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
-    monospace;
-}
diff --git a/src/index.js b/src/index.js
deleted file mode 100644
index d563c0fb..00000000
--- a/src/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-import './index.css';
-import App from './App';
-import reportWebVitals from './reportWebVitals';
-
-const root = ReactDOM.createRoot(document.getElementById('root'));
-root.render(
-  <React.StrictMode>
-    <App />
-  </React.StrictMode>
-);
-
-// If you want to start measuring performance in your app, pass a function
-// to log results (for example: reportWebVitals(console.log))
-// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
-reportWebVitals();
diff --git a/src/logo.svg b/src/logo.svg
deleted file mode 100644
index 9dfc1c05..00000000
--- a/src/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
\ No newline at end of file
diff --git a/src/pages/Confirm.js b/src/pages/Confirm.js
deleted file mode 100644
index 98ba0433..00000000
--- a/src/pages/Confirm.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { Grid, ListItem, ListItemAvatar, ListItemText, Card, CardContent, Typography, Button } from '@mui/material';
-import CheckCircleOutlineRoundedIcon from '@mui/icons-material/CheckCircleOutlineRounded';
-import TuneRoundedIcon from '@mui/icons-material/TuneRounded';
-import {useNavigate, Route} from "react-router-dom";
-
-export default function Confirm() {
-    const [myData, setMyData] = useState([])
-    const [dataset, setDataset] = useState()
-    const [network, setNetwork] = useState()
-
-  useEffect(() => {
-    const res = fetch('/confirm').then(
-      response => response.json()
-      ).then(data => {setMyData(data);
-        if (data.ds == 'Other'){setDataset(data.ds_name)} else {setDataset(data.ds)};
-        if (data.IsLeNet == 'Other'){setNetwork(data.network_name)} else {setNetwork(data.IsLeNet)};
-    });
-  }, []);
-
-  let navigate = useNavigate();
-  const onSubmit = async () => {
-    navigate('/progress', {replace:true});
-  };
-
-    return (
-        <div className="App" style={{padding:"60px"}}>
-            <Typography gutterBottom variant="h3" align="center" >
-            Data Auto-Augmentation
-            </Typography>
-            <Grid>
-                <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                    <CardContent>
-                        <Typography gutterBottom variant="h6" align="left">
-                            Please confirm the following information:
-                        </Typography> 
-                        <Grid alignItems="center" justify="center" >
-                        <Grid style={{maxWidth: 700, padding: "20px 20px"}} container spacing={4} alignItems="center" >
-                        <Grid xs={12} sm={6} item> 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <TuneRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Batch size" secondary={myData.batch_size} />
-                            </ListItem>
-                        </Grid>
-                        <Grid xs={12} sm={6} item > 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <CheckCircleOutlineRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Dataset selection" secondary={dataset} />
-                            </ListItem>
-                        </Grid>
-                        <Grid xs={12} sm={6} item> 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <TuneRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Learning rate" secondary={myData.learning_rate} />
-                            </ListItem>
-                        </Grid>
-                        <Grid xs={12} sm={6} item> 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <CheckCircleOutlineRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Network selection" secondary={network} />
-                            </ListItem>
-                        </Grid>
-                        <Grid xs={12} sm={6} item> 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <TuneRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Dataset Proportion" secondary={myData.toy_size} />
-                            </ListItem>
-                        </Grid>
-                        <Grid xs={12} sm={6} item> 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <CheckCircleOutlineRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Auto-augment learner selection" secondary={myData.auto_aug_learner} />
-                            </ListItem>
-                        </Grid>
-                        <Grid xs={12} sm={6} item> 
-                            <ListItem>
-                                <ListItemAvatar>
-                                    <TuneRoundedIcon color="primary" fontSize='large'/>
-                                </ListItemAvatar>
-                                <ListItemText primary="Iterations" secondary={myData.iterations} />
-                            </ListItem>
-                        </Grid>
-                        </Grid>
-                        </Grid>
-                    
-                        <Button
-                            type="submit"
-                            variant="contained"
-                            color='success'
-                            size='large'
-                            onClick={onSubmit}
-                        >
-                            Confirm
-                        </Button>
-
-                    </CardContent>
-                </Card>
-            </Grid>
-        </div>
-    )
-}
\ No newline at end of file
diff --git a/src/pages/Home.js b/src/pages/Home.js
deleted file mode 100644
index 8b745e78..00000000
--- a/src/pages/Home.js
+++ /dev/null
@@ -1,394 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { Grid, RadioGroup, FormControlLabel, FormControl, FormLabel, Radio, Card, CardContent, Typography, AlertTitle } from '@mui/material';
-import {Button, TextField, Checkbox, Alert} from '@mui/material';
-import { useForm, Controller} from "react-hook-form";
-import SendIcon from '@mui/icons-material/Send';
-import { CardActions, Collapse, IconButton } from "@mui/material";
-import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
-import { styled } from '@mui/material/styles';
-import {useNavigate, Route} from "react-router-dom";
-
-
-
-
-const ExpandMore = styled((props) => {
-    const { expand, ...other } = props;
-    return <IconButton {...other} />;
-  })(({ theme, expand }) => ({
-    transform: !expand ? 'rotate(0deg)' : 'rotate(180deg)',
-    marginLeft: 'auto',
-    transition: theme.transitions.create('transform', {
-      duration: theme.transitions.duration.shortest,
-    }),
-  }));
-
-
-
-
-export default function Home() {
-    const [selectLearner, setSelectLearner] = useState([]);
-    const [selectAction, setSelectAction] = useState([]);
-
-    // for form submission  
-    const {register, control, handleSubmit, setValue, watch, formState: { errors, dirtyFields}} = useForm();
-    const watchFileds = watch(['select_dataset', 'select_network']);
-
-    let navigate = useNavigate();
-
-    const onSubmit = async (data) => {
-        console.log('data', data);
-
-        const formData = new FormData();
-
-        formData.append("ds_upload", data.ds_upload[0]);
-        formData.append("network_upload", data.network_upload[0]);
-        formData.append("batch_size", data.batch_size)
-        formData.append("toy_size", data.toy_size)
-        formData.append("iterations", data.iterations)
-        formData.append("learning_rate", data.learning_rate)
-        formData.append("select_action", data.select_action)
-        formData.append("select_dataset", data.select_dataset)
-        formData.append("select_learner", data.select_learner)
-        formData.append("select_network", data.select_network)
-
-        console.log('>>> this is the user input in formData')
-        for (var key of formData.entries()) {
-            console.log(key[0] + ', ' + key[1])}
-        
-        var responseClone
-        const res = await fetch('/home', {
-        method: 'POST',
-        body: formData
-        }).then((response) => response.json());
-        
-        navigate('/confirm', {replace:true});
-        // 
-        ///////// testing
-        // .then((response)=> {
-        //     responseClone = response.clone(); // 2
-        //     return response.json();
-        // })
-        // .then(function (data) {
-        //     console.log('data from flask', data)
-        // }, function (rejectionReason) { // 3
-        //     console.log('Error parsing JSON from response:', rejectionReason, responseClone); // 4
-        //     responseClone.text() // 5
-        //     .then(function (bodyText) {
-        //         console.log('Received the following instead of valid JSON:', bodyText); // 6
-        //     });
-        // });
-        
-    };
-
-    
-    // body: JSON.stringify(data)
-    // console.log('errors', errors); 
-    // console.log('handleSubmit', handleSubmit)
-
-    
-    // handling action selection
-    const handleActionSelect = (value) => {
-        const isPresent = selectAction.indexOf(value);
-        if (isPresent !== -1) {
-        const remaining = selectAction.filter((item) => item !== value);
-        setSelectAction(remaining);
-        } else {
-        setSelectAction((prevItems) => [...prevItems, value]);
-        }
-    };
-
-    useEffect(() => {
-        setValue('select_action', selectAction); 
-    }, [selectAction]);
-
-    // collpase
-    const [expanded, setExpanded] = React.useState(false);
-
-    const handleExpandClick = () => {
-        setExpanded(!expanded);
-    };
-
-        return (
-        <div className="App" style={{padding:"60px"}}> 
-            <Typography gutterBottom variant="h3" align="center" >
-            Data Auto-Augmentation
-            </Typography>
-            <Grid >
-                <form action="/home" method="POST" onSubmit={handleSubmit(onSubmit)}>
-                <Grid style={{padding:"30px 0px"}}>
-                    <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                        <CardContent>
-                            <Typography gutterBottom variant="h5" align="left">
-                                Dataset Uploading
-                            </Typography> 
-
-                            <FormControl style={{ maxWidth: 800, padding:"20px"}} error={Boolean(errors.select_dataset)}>
-                                <FormLabel id="select_dataset" align="left" variant="h6">
-                                    Please select the dataset you'd like to use here or select 'Other' if you would like to upload your own dataset
-                                </FormLabel>
-                                <Controller 
-                                        name='select_dataset'
-                                        control={control}
-                                        rules={{ required: true }}
-                                        render={({field: { onChange, value }}) => (
-                                    <RadioGroup
-                                        row
-                                        aria-labelledby="select_dataset"
-                                        // defaultValue="Other"
-                                        name="select_dataset"
-                                        align="centre"
-                                        value={value ?? ""} 
-                                        onChange={onChange}
-                                        >
-                                        <FormControlLabel value="MNIST" control={<Radio />} label="MNIST" />
-                                        <FormControlLabel value="KMNIST" control={<Radio />} label="KMNIST" />
-                                        <FormControlLabel value="FashionMNIST" control={<Radio />} label="FashionMNIST" />
-                                        <FormControlLabel value="CIFAR10" control={<Radio />} label="CIFAR10" />
-                                        <FormControlLabel value="CIFAR100" control={<Radio />} label="CIFAR100" />
-                                        <FormControlLabel value="Other" control={<Radio />} label="Other" />
-                                    </RadioGroup> 
-                                    )}
-                                />
-                                {errors.select_dataset && errors.select_dataset.type === "required" && 
-                                    <Alert severity="error">
-                                        <AlertTitle>This field is required</AlertTitle>
-                                    </Alert>}
-                                {watchFileds[0]!=='Other' && 
-                                    <input
-                                        {...register('ds_upload')}
-                                        name="ds_upload"
-                                        type="file"
-                                        hidden
-                                    />}
-                                {watchFileds[0]==='Other' &&
-                                    <Button
-                                    variant="contained"
-                                    component="label"
-                                    >
-                                    Upload File
-                                    <input
-                                        {...register('ds_upload')}
-                                        name="ds_upload"
-                                        type="file"
-                                        hidden
-                                    />
-                                    </Button>
-                                }
-                                {dirtyFields.ds_upload && <Alert severity="success" variant='outlined'>File Submitted</Alert>}
-                            </FormControl>
-                        </CardContent>
-                    </Card>
-                </Grid>
-                <Grid style={{padding:"30px 0px"}}>
-                    <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                        <CardContent>
-                            <Typography gutterBottom variant="h5" align="left">
-                                Network Uploading
-                            </Typography> 
-
-                            <FormControl style={{ maxWidth: 800, padding:"20px"}} error={Boolean(errors.select_network)}>
-                                <FormLabel id="select_network" align="left" variant="h6">
-                                    Please select the network you'd like to use here or select 'Other' if you would like to upload your own network
-                                </FormLabel>
-                                <Controller 
-                                        name='select_network'
-                                        control={control}
-                                        rules={{ required: true }}
-                                        render={({field: { onChange, value }}) => (
-                                    <RadioGroup
-                                        row
-                                        aria-labelledby="select_network"
-                                        name="select_network"
-                                        align="centre"
-                                        value={value ?? ""} 
-                                        onChange={onChange}
-                                        >
-                                        <FormControlLabel value="LeNet" control={<Radio />} label="LeNet" />
-                                        <FormControlLabel value="SimpleNet" control={<Radio />} label="SimpleNet" />
-                                        <FormControlLabel value="EasyNet" control={<Radio />} label="EasyNet" />
-                                        <FormControlLabel value="Other" control={<Radio />} label="Other" /> 
-                                    </RadioGroup> )}
-                                />
-                                {errors.select_network && errors.select_network.type === "required" && 
-                                    <Alert severity="error">
-                                        <AlertTitle>This field is required</AlertTitle>
-                                    </Alert>}
-                                <Typography style={{ maxWidth: 750}} variant="body2" color="textSecondary" component="p" gutterBottom align="left">
-                                    The networks provided above are for demonstration purposes. The relative training time is: LeNet {'>'} SimpleNet {'>'} EasyNet. 
-                                    We recommend you to choose EasyNet for a quick demonstration of how well our auto-augment agents can perform. 
-                                </Typography>
-                                {watchFileds[1]!=='Other' && 
-                                    <input
-                                        {...register('network_upload')}
-                                        name="network_upload"
-                                        type="file"
-                                        hidden
-                                    />}
-                                {watchFileds[1]==='Other' &&
-                                    <Button
-                                    variant="contained"
-                                    component="label"
-                                    >
-                                    Upload File
-                                    <input
-                                        {...register('network_upload')}
-                                        name="network_upload"
-                                        type="file"
-                                        hidden
-                                    />
-                                    </Button>
-                                }
-                                {dirtyFields.network_upload && <Alert severity="success" variant='outlined'>File Submitted</Alert>}
-                            </FormControl>
-                        </CardContent>
-                    </Card>
-                </Grid>
-
-                <Grid style={{padding:"30px 0px"}}>
-                    <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                        <CardContent>
-                            <Typography gutterBottom variant="h5" align="left">
-                                Auto-augment Learner Selection
-                            </Typography> 
-
-                            <FormControl style={{ maxWidth: 800, padding:"20px"}} error={Boolean(errors.select_learner)}>
-                                <FormLabel id="select_learner" align="left" variant="h6">
-                                    Please select the auto-augment learners you'd like to use (multiple learners can be selected)
-                                </FormLabel>
-                                <Controller 
-                                        name='select_learner'
-                                        control={control}
-                                        rules={{ required: true }}
-                                        render={({field: { onChange, value }}) => (
-                                    <RadioGroup
-                                        row
-                                        aria-labelledby="select_learner"
-                                        name="select_learner"
-                                        align="centre"
-                                        value={value ?? ""} 
-                                        onChange={onChange}
-                                        >
-                                        <FormControlLabel value="UCB learner" control={<Radio />} label="UCB learner" />
-                                        <FormControlLabel value="Evolutionary learner" control={<Radio />} label="Evolutionary learner" />
-                                        <FormControlLabel value="Random Searcher" control={<Radio />} label="Random Searcher" />
-                                        <FormControlLabel value="GRU Learner" control={<Radio />} label="GRU Learner" /> 
-                                    </RadioGroup> )}
-                                />
-                                {errors.select_learner && errors.select_learner.type === "required" && 
-                                    <Alert severity="error">
-                                        <AlertTitle>This field is required</AlertTitle>
-                                    </Alert>}
-                                <Typography style={{ maxWidth: 800}} variant="body2" color="textSecondary" component="p" gutterBottom align="left">
-                                    (give user some recommendation here...)
-                                </Typography>
-                            </FormControl>
-                        </CardContent>
-                    </Card>
-                </Grid>
-
-
-                <Grid style={{padding:"30px 0px", maxWidth: 900, margin: "0 auto"}}>
-                    <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                        <CardContent>
-                            <Typography variant="h5" align="left">
-                                Advanced Search
-                            </Typography>
-                        </CardContent>
-                        <CardActions disableSpacing>
-                            <ExpandMore
-                            expand={expanded}
-                            onClick={handleExpandClick}
-                            aria-expanded={expanded}
-                            aria-label="show more"
-                            >
-                            <ExpandMoreIcon />
-                            </ExpandMore>
-                        </CardActions>
-                        <Collapse in={expanded} timeout="auto" unmountOnExit>
-                            <Grid container
-                                    spacing={0}
-                                    direction="column"
-                                    alignItems="center"
-                                    justify="center">
-                            <CardContent>
-                            <Typography gutterBottom variant="subtitle1" align='left'>
-                                    Please input the hyperparameter you'd like to train your dataset with
-                            </Typography>
-                            <Grid container spacing={1} style={{maxWidth:800, padding:"10px 10px"}}>
-                                <Grid xs={12} sm={6} item>
-                                    <TextField type="number" InputProps={{ inputProps: { min: 0} }} {...register("batch_size")} name="batch_size" placeholder="Batch Size" label="Batch Size" variant="outlined" fullWidth />
-                                </Grid>
-                                <Grid xs={12} sm={6} item>
-                                    <TextField type="number" inputProps={{step: "0.000000001",min: 0}} {...register("learning_rate")} name="learning_rate" placeholder="Learning Rate" label="Learning Rate" variant="outlined" fullWidth />
-                                </Grid>
-                                <Grid xs={12} sm={6} item>
-                                    <TextField type="number" InputProps={{ inputProps: { min: 0} }} {...register("iterations")} name="iterations" placeholder="Number of Iterations" label="Iterations" variant="outlined" fullWidth />
-                                </Grid>
-                                <Grid xs={12} sm={6} item>
-                                    <TextField type="number" inputProps={{step: "0.01", min: 0}} {...register("toy_size")} name="toy_size" placeholder="Dataset Proportion" label="Dataset Proportion" variant="outlined" fullWidth />
-                                </Grid>
-                                <FormLabel variant="h8" align='centre'>
-                                    * Dataset Proportion defines the percentage of original dataset our auto-augment learner will use to find the 
-                                    augmentation policy. If your dataset is large, we recommend you to set Dataset Proportion a small value (0.1-0.3). 
-                                </FormLabel>
-                            </Grid>
-
-                            <Grid style={{maxWidth:800, padding:"40px 10px"}}>
-                                <Typography gutterBottom variant="subtitle1" align='left'>
-                                    Please select augmentation methods you'd like to exclude 
-                                </Typography>
-                                <div>
-                                    {['ShearX', 'ShearY', 'TranslateX', 'TranslateY', 'Rotate', 'Brightness',
-                                    'Color', 'Contrast', 'Sharpness', 'Posterize', 'Solarize', 'AutoContrast', 
-                                    'Equalize', 'Invert'].map((option) => {
-                                    return (
-                                        <FormControlLabel
-                                        control={
-                                            <Controller
-                                            name='select_action'
-                                            render={({}) => {
-                                                return (
-                                                <Checkbox
-                                                    checked={selectAction.includes(option)}
-                                                    onChange={() => handleActionSelect(option)}/> );
-                                            }}
-                                            control={control}
-                                            />}
-                                        label={option}
-                                        key={option}
-                                        />
-                                    );
-                                    })}
-                                </div>
-                            </Grid>
-                            </CardContent>
-                            </Grid>
-                        </Collapse>
-                         
-                    </Card>
-                </Grid>
-
-                <Button
-                    type="submit"
-                    variant="contained"
-                    color='success'
-                    size='large'
-                    endIcon={<SendIcon />}
-                >
-                    Submit Form
-                </Button>
-                {watchFileds[0]==='Other' && !dirtyFields.ds_upload && 
-                    <Alert severity="error" variant='standard'>Please upload your dataset 
-                    zip file or select one of the dataset we have provided</Alert>}
-                {watchFileds[1]==='Other' && !dirtyFields.network_upload && 
-                    <Alert severity="error" variant='standard'>Please upload your network 
-                    .pkl file or select one of the network we have provided</Alert>}
-                    
-                </form>
-                        
-            </Grid>
-        </div>
-            
-        );
-    }
-
diff --git a/src/pages/Progress.js b/src/pages/Progress.js
deleted file mode 100644
index 2dee4fb5..00000000
--- a/src/pages/Progress.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { Grid, LinearProgress, Card, CardContent, Typography, Button, TextField } from '@mui/material';
-import CheckCircleOutlineRoundedIcon from '@mui/icons-material/CheckCircleOutlineRounded';
-import TuneRoundedIcon from '@mui/icons-material/TuneRounded';
-import {useNavigate, Route} from "react-router-dom";
-
-
-
-export default function Training() {
-    let navigate = useNavigate();
-
-    const [status, setStatus] = useState("Training");
-    useEffect(() => {
-        const res = fetch('/training'
-        ).then(response => response.json()
-        ).then(data => {setStatus(data.status); console.log(data.status)});
-
-        
-        }, []);
-
-    const onSubmit = async () => {
-        navigate('/result', {replace:true});
-    }
-
-    return (
-        <div className="App" style={{padding:"60px"}}>
-            <Typography gutterBottom variant="h3" align="center" >
-            Data Auto-Augmentation
-            </Typography>
-            <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                <CardContent>
-                    <Grid style={{padding:"30px"}}>
-                    <Typography gutterBottom variant="h6" align="center" >
-                        Our auto-augment learners are working hard to generate your data augmentation policy ...
-                    </Typography>
-                    </Grid>
-
-                    {status==="Training" &&
-                        <Grid style={{padding:"60px"}}>
-                            <LinearProgress color="primary"/>
-                            <LinearProgress color="primary" />
-                            <LinearProgress color="primary" />
-                            <LinearProgress color="primary" />
-                        </Grid>
-                    }
-
-                    <Grid style={{padding:"50px"}}>
-                    <Typography variant='h6'>
-                        Current status: {status}
-                    </Typography>
-                    </Grid>
-                    
-                    {status==="Training is done!" &&
-                        <Button
-                                type="submit"
-                                variant="contained"
-                                color='primary'
-                                size='large'
-                                onClick={onSubmit}
-                            >
-                                Show Results
-                        </Button>
-                    }
-                </CardContent>
-            </Card>
-                
-        </div>
-    )
-}
\ No newline at end of file
diff --git a/src/pages/Result.js b/src/pages/Result.js
deleted file mode 100644
index 70dec30c..00000000
--- a/src/pages/Result.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { Grid, List, ListItem, Avatar, ListItemAvatar, ListItemText, Card, CardContent, Typography, Button, CardMedia } from '@mui/material';
-import output from './pytest.png'
-import {useNavigate, Route} from "react-router-dom";
-import axios from 'axios'
-import fileDownload from 'js-file-download'
-
-export default function Result() {
-
-    const handleClick = () => {
-        axios.get('/result', {
-            responseType: 'blob',
-          })
-        .then((res) => {
-          fileDownload(res.data, 'policy.txt');
-          console.log(res.data)
-        })
-      }
-    
-    return (
-        <div className="App" style={{padding:"60px"}}>
-            <Typography gutterBottom variant="h3" align="center" >
-            Data Auto-Augmentation
-            </Typography>
-            <Card style={{ maxWidth: 900, padding: "10px 5px", margin: "0 auto" }}>
-                <CardContent>
-                    <Typography gutterBottom variant="h5" align="left">
-                        Here are the results from our auto-augment agent:
-                    </Typography>
-                    <Grid style={{padding:"30px"}} container spacing={4} alignItems="center">
-                        <Grid xs={7} item> 
-                            <img src={output} alt='output' />
-                        </Grid>
-                        <Grid xs={5} item> 
-                            <Typography>
-                                write something here to explain the meaning of the graph to the user
-                            </Typography>
-                        </Grid>
-                    </Grid>
-
-                    <Typography gutterBottom variant='h6' align='center'>
-                        You can download the augentation policy here
-                    </Typography>
-                    <Button
-                            type="submit"
-                            variant="contained"
-                            color='primary'
-                            size='large'
-                            onClick={() => handleClick('https://avatars.githubusercontent.com/u/9919?s=280&v=4', 'sample')}
-                        >
-                            Download
-                    </Button>
-                    <Typography>
-                        Please follow our documentation to apply this policy to your dataset.
-                    </Typography>
-                </CardContent>
-            </Card>
-
-        </div>
-    )
-}
\ No newline at end of file
diff --git a/src/pages/WrongDS.js b/src/pages/WrongDS.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/pages/pytest.png b/src/pages/pytest.png
deleted file mode 100644
index 272b44ed38c9107f19c99dc9a5ac38593493604f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8124
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
WneV!oSq7S$XYh3Ob6Mw<&;$Uq4ChJ!

diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js
deleted file mode 100644
index 5253d3ad..00000000
--- a/src/reportWebVitals.js
+++ /dev/null
@@ -1,13 +0,0 @@
-const reportWebVitals = onPerfEntry => {
-  if (onPerfEntry && onPerfEntry instanceof Function) {
-    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
-      getCLS(onPerfEntry);
-      getFID(onPerfEntry);
-      getFCP(onPerfEntry);
-      getLCP(onPerfEntry);
-      getTTFB(onPerfEntry);
-    });
-  }
-};
-
-export default reportWebVitals;
diff --git a/src/setupTests.js b/src/setupTests.js
deleted file mode 100644
index 8f2609b7..00000000
--- a/src/setupTests.js
+++ /dev/null
@@ -1,5 +0,0 @@
-// jest-dom adds custom jest matchers for asserting on DOM nodes.
-// allows you to do things like:
-// expect(element).toHaveTextContent(/react/i)
-// learn more: https://github.com/testing-library/jest-dom
-import '@testing-library/jest-dom';
diff --git a/test/web_app/test_flask_routes.py b/test/web_app/test_flask_routes.py
index f3dac791..cbbfb558 100644
--- a/test/web_app/test_flask_routes.py
+++ b/test/web_app/test_flask_routes.py
@@ -1,6 +1,6 @@
 import pytest
 import unittest
-from backend_react import react_app
+from . import react_app
 import json
 
 
-- 
GitLab