Giter Site home page Giter Site logo

csiss / geoweaver Goto Github PK

View Code? Open in Web Editor NEW

This project forked from esipfed/geoweaver

2.0 2.0 1.0 33.61 MB

a web system to allow users to easily compose and execute full-stack Long Short Term Memory (LSTM) Recurrent Neural Network (RNN) workflows in web browsers by taking advantage of the online spatial data facilities, high-performance computation platforms, and open-source deep learning libraries.

License: MIT License

HTML 0.52% CSS 1.13% JavaScript 87.66% Java 10.69% Dockerfile 0.01%

geoweaver's Introduction

Welcome to Geoweaver

2018 ESIP Lab Incubator Project

Geoweaver is a web system allowing users to easily compose and execute full-stack deep learning workflows via taking advantage of online spatial data facilities, high-performance computation platforms, and open-source deep learning libraries. It is a perfect alternative to SSH client (e.g., Putty), FTP client, and scientific workflow software.

Table of Contents

Project Goals

  1. turning large-scale distributed deep network into manageable modernized workflows;

  2. boosting higher utilization ratio of the existing cyberinfrastructures by separating scientists from tedious technical details;

  3. enhancing the frequency and accuracy of classified land cover land use maps for agricultural purposes;

  4. enabling the tracking of provenance by recording the execution logs in structured tables to evaluate the quality of the result maps;

  5. proof the effectiveness of operationally using large-scale distributed LSTM network in classifying Landsat image time series.

Installation

Prerequisite

JDK 1.8+

Tomcat 8.0+

MySQL 5.5+ (run the gw.sql to initialize the database. Recommanded command: mysql -u root -p < gw.sql)

Maven 3.5+ (for building from source)

Docker 18.09.1+ (for install via docker)

Docker-compose 1.23.1+ (for install via docker)

Quick Install

Docker

We use docker-compose to establish the containers for Geoweaver. As the DockerHub is not very friendly for docker-compose yaml at present, we only suggest manual to start from GitHub repo. It only has three steps.

  • Clone this repo to your machine
git clone https://github.com/ESIPFed/Geoweaver.git
  • Enter the repo and create a new folder target. Download a Geoweaver war package from the release page and save it in the created target folder.
cd Geoweaver && mkdir target && cd target
wget https://github.com/ESIPFed/Geoweaver/releases/download/v0.6.10/Geoweaver-0.6.10.war -O Geoweaver.war
  • Run docker to start rolling. After the command is finished, Geoweaver should be up and running.
cd .. && docker-compose up -d

The address is:

http://your-ip:your-port/Geoweaver/web/geoweaver

Replace the your-ip, your-port with the real domain of your tomcat. For example, localhost:8080.

Notice: Make sure the local services like mysql and tomcat are shut down before starting docker-compose. Otherwise there might be port conflict error on 3306 and 8080. Or you can change the port to some other free ports in the docker-compose.yml.

If you don't have docker or docker-compose installed, these documents will help. docker docker-compose

To stop Geoweaver, type:

docker stop $(docker ps -aq)

Tomcat War

  • Download the latest release war and copy it to the webapps directory of Tomcat (e.g. /usr/local/tomcat). Start Tomcat.
wget https://github.com/ESIPFed/Geoweaver/releases/download/v0.6.10/Geoweaver-0.6.10.war -O Geoweaver.war
cp Geoweaver.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/startup.sh
  • After the tomcat is fully started, configure the database connection. The configuration files are WEB-INF/classes/config.properties
nano /usr/local/tomcat/webapps/Geoweaver/WEB-INF/classes/config.properties
nano /usr/local/tomcat/webapps/Geoweaver/WEB-INF/classes/cc_secret.properties

Fill the fields with correct values. (database url, default: jdbc:mysql://localhost:3306/cyberconnector) and WEB-INF/classes/cc_secret.properties (database username and password: database_user=root database_password=xxxxxxxx).

(Note: the database must be initiated by the SQL file under the folder Geoweaver/docker/db first.)

mysql -u root -p < docker/db/gw.sql
  • Enter the following URL into browser address bar to open Geoweaver:
http://your-ip:your-port/Geoweaver/web/geoweaver

To stop Geoweaver, use:

/usr/local/tomcat/bin/shutdown.sh

Cloud VM Template

We provide a ready-to-use cloud template for you to install on mainstream cloud platforms like AWS, Google Cloud, Azure, OpenStack and CloudStack. Please go here to download the template (3.1 Gigabytes). The username and password of the instance would be csiss and password respectively.

To start Geoweaver, go to directory /home/csiss/Geoweaver and execute docker-compose up -d. With no accident, Geoweaver will be up and running.

cd /home/csiss/Geoweaver && docker-compose up -d

To stop Geoweaver, use:

docker stop $(docker ps -aq)

Build from source

Use maven to build. In the command line go to the root folder and execute mvn install. After a success build, the Geoweaver war package will be under the directory: Geoweaver/target/Geoweaver-<version>.war.

Demo

A live demo site is available in George Mason University: I am a link, hit me.

Here is a use case of Geoweaver, using deep neural network like LSTM RNN and SegNet to classify landsat images into agricultural land use maps. In this case, Geoweaver can help stakeholders get crop maps with better accuracy and high temporal resolution by providing a deep-learning-powered and distributed workflow system.

Result Demo

LSTM-Crop concept

Animation demo:

AnimationDemo

Usage

Add A Server

Enroll a server to Geoweaver is simple. The server must have SSH server installed and enabled. The server must be accessible from Geoweaver host server.

Add a host

Create A Process

Geoweaver supports Bash Shell scripts as processes. You can write bash command lines in the code area. Note: the commands should exist on the target hosts.

Add a process

Create A Workflow

Geoweaver can link the processes together to form a workflow. To connect two processes, press shift key while dragging from one process to another.

Create a workflow

Run Workflow

Geoweaver can run the created workflows on the enlisted servers. During the running, Geoweaver is monitoring the status of each process. The color of process text in their circles indicate the process status. Yellow means running, green means completed, and red means failure.

Run a workflow

Browse Provenance

Geoweaver stores all the inputs and outputs of each process run. Users can check the workflow provenance by simply clicking.

Check provenance

Retrieve and Display Results

Geoweaver can retrieve the result files of the executed workflows and visualize them if the format is supported (png, jpg, bmp, etc. The list is expanding. I am on it.).

Get result

I/O workflows

The workflows can be exported and move around and imported back.

Export workflow

Documentation

Project Proposal

August Report

September Report

October Report

November Report

December Report

Dependencies

This project is impossible without the support of several fantastic open source libraries.

d3.js - BSD 3-Clause

graph-creator - MIT License

bootstrap - MIT License

CodeMirror - MIT License

JQuery Terminal - MIT License

License

MIT

Author

developer list

geoweaver's People

Contributors

virginiajrs avatar zihengsun avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

scvetojevic1402

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.