From ff3796f9bde6e6826d4a9e86ac7d47107e3592cf Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Mon, 18 Mar 2024 01:49:01 -0400 Subject: [PATCH 01/17] Update README.md --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b682fcf60..b05edcb40 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,13 @@ It can be run from both local and remote (distributed) machines. Why choose Geoweaver? 1) Safely Store all your progress along the way. 2) Visualise your results using the tools that you already use. -3) Stay organised through out your research +3) Stay organised through out your research. 4) Uses CRON for scheduling jobs, particularly in Unix-like operating systems (such as Linux), to automate tasks at specific times or intervals. CRON is a command-line utility that helps in performing routine tasks automatically without requiring your direct intervention. 5) Seamlessly connect to external servers with SSH. 6) In-Built Web UI with full support for Python. +For further insights into Geoweaver, please explore the website at https://geoweaver.dev + GeoWeaver is a community effort. Any contribution is welcome and greatly appreciated! # Software Goals @@ -42,6 +44,12 @@ Only two things basically: [A live demo site](https://geobrain.csiss.gmu.edu/Geoweaver) is available. +# [PyGeoWeaver](https://github.com/ESIPFed/pygeoweaver) + +PyGeoWeaver is a Python package that provides a convenient and user-friendly interface to interact with GeoWeaver, a powerful geospatial data processing application written in Java. With PyGeoWeaver, Jupyter notebook and JupyterLab users can seamlessly integrate and utilize the capabilities of GeoWeaver within their Python workflows. + +Please do visit the PyGeoWeaver GitHub repository. + # Citation If you found Geoweaver helpful in your research, please cite: From acda815bcd1d96a57eaec7f154ad1231fb236f80 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Mon, 18 Mar 2024 21:16:49 -0400 Subject: [PATCH 02/17] Add files via upload --- Geoweaver Banner.png | Bin 0 -> 35438 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Geoweaver Banner.png diff --git a/Geoweaver Banner.png b/Geoweaver Banner.png new file mode 100644 index 0000000000000000000000000000000000000000..306aa3308748561c2807e5b2f0a9db534a0d9811 GIT binary patch literal 35438 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 R8A>2~Jzf1=);T3K0RX;d#5n)} literal 0 HcmV?d00001 From 2569b21131fea04dca79fee628a5592295084aab Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Mon, 18 Mar 2024 21:30:36 -0400 Subject: [PATCH 03/17] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 68f32a1a0..0d37d08c2 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ # [Geoweaver](https://esipfed.github.io/Geoweaver/) +![logo](https://github.com/JYOSHREDDY/Geoweaver/blob/master/Geoweaver%20Banner.png) + Geoweaver is an in-browser software allowing users to easily compose and execute full-stack data processing workflows via taking advantage of online spatial data facilities, high-performance computation platforms, and open-source deep learning libraries. It provides all-in-one capacity covering server management, code repository, workflow orchestration software, and history recorder. It can be run from both local and remote (distributed) machines. From 6803d1d13f59128afade0d54ff8f330fa27c2dde Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Mon, 25 Mar 2024 16:07:59 -0400 Subject: [PATCH 04/17] Update README.md Created badges to display contributors list --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 0d37d08c2..247193eb6 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,12 @@ PyGeoWeaver is a Python package that provides a convenient and user-friendly int Please do visit the PyGeoWeaver GitHub repository. +## Contributors + +Thanks to our many contributors! + +[![Contributors](https://contrib.rocks/image?repo=ESIPFed/Geoweaver)](https://github.com/ESIPFed/Geoweaver/graphs/contributors) + # Citation If you found Geoweaver helpful in your research, please cite: From bca57fdea8776aadb504dcbbd9a1d5ca485c7614 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Sat, 6 Apr 2024 19:09:31 -0400 Subject: [PATCH 05/17] Update README.md created new pypi badge. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 247193eb6..d26cdc763 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![CircleCI](https://circleci.com/gh/ZihengSun/Geoweaver/tree/master.svg?style=svg)](https://circleci.com/gh/ZihengSun/Geoweaver/tree/master) [![License](https://img.shields.io/github/license/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/blob/master/LICENSE) [![Stars](https://img.shields.io/github/stars/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/stargazers) [![Forks](https://img.shields.io/github/forks/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/network/members) [![Issues](https://img.shields.io/github/issues/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/issues) [![Coverage](https://img.shields.io/badge/coverage-100%25-success.svg)](https://codecov.io/) +[![PyPi](https://img.shields.io/pypi/v/geoweaver-cwl.svg)](https://pypi.org/project/geoweaver-cwl/) # [Geoweaver](https://esipfed.github.io/Geoweaver/) From 2e926049a325dc4e07c3a5fd8396650a3c32b563 Mon Sep 17 00:00:00 2001 From: Gokul Prathin Date: Sun, 7 Apr 2024 16:28:34 -0400 Subject: [PATCH 06/17] Changes to README.md * changed image location to match spring's static content * added github actions to README.md --- README.md | 5 +++-- .../static/img/geoweaver-readme-banner.png | Bin 2 files changed, 3 insertions(+), 2 deletions(-) rename Geoweaver Banner.png => src/main/resources/static/img/geoweaver-readme-banner.png (100%) diff --git a/README.md b/README.md index d26cdc763..f7dc9d2fa 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ -[![CircleCI](https://circleci.com/gh/ZihengSun/Geoweaver/tree/master.svg?style=svg)](https://circleci.com/gh/ZihengSun/Geoweaver/tree/master) [![License](https://img.shields.io/github/license/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/blob/master/LICENSE) [![Stars](https://img.shields.io/github/stars/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/stargazers) [![Forks](https://img.shields.io/github/forks/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/network/members) [![Issues](https://img.shields.io/github/issues/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/issues) [![Coverage](https://img.shields.io/badge/coverage-100%25-success.svg)](https://codecov.io/) +![example workflow](https://github.com/ESIPFed/Geoweaver/actions/workflows/release_workflow.yml/badge.svg) +[![License](https://img.shields.io/github/license/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/blob/master/LICENSE) [![Stars](https://img.shields.io/github/stars/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/stargazers) [![Forks](https://img.shields.io/github/forks/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/network/members) [![Issues](https://img.shields.io/github/issues/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/issues) [![Coverage](https://img.shields.io/badge/coverage-100%25-success.svg)](https://codecov.io/) [![PyPi](https://img.shields.io/pypi/v/geoweaver-cwl.svg)](https://pypi.org/project/geoweaver-cwl/) # [Geoweaver](https://esipfed.github.io/Geoweaver/) -![logo](https://github.com/JYOSHREDDY/Geoweaver/blob/master/Geoweaver%20Banner.png) +![logo](src/main/resources/static/img/geoweaver-readme-banner.png) Geoweaver is an in-browser software allowing users to easily compose and execute full-stack data processing workflows via taking advantage of online spatial data facilities, high-performance computation platforms, and open-source deep learning libraries. It provides all-in-one capacity covering server management, code repository, workflow orchestration software, and history recorder. diff --git a/Geoweaver Banner.png b/src/main/resources/static/img/geoweaver-readme-banner.png similarity index 100% rename from Geoweaver Banner.png rename to src/main/resources/static/img/geoweaver-readme-banner.png From 3b43f03d32344139b02b19a94021db4899bc26b6 Mon Sep 17 00:00:00 2001 From: Gokul Prathin Date: Sun, 7 Apr 2024 16:42:50 -0400 Subject: [PATCH 07/17] changes to README.md * modernize badges --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f7dc9d2fa..add416917 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,21 @@ -![example workflow](https://github.com/ESIPFed/Geoweaver/actions/workflows/release_workflow.yml/badge.svg) -[![License](https://img.shields.io/github/license/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/blob/master/LICENSE) [![Stars](https://img.shields.io/github/stars/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/stargazers) [![Forks](https://img.shields.io/github/forks/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/network/members) [![Issues](https://img.shields.io/github/issues/ESIPFed/Geoweaver.svg)](https://github.com/ESIPFed/Geoweaver/issues) [![Coverage](https://img.shields.io/badge/coverage-100%25-success.svg)](https://codecov.io/) -[![PyPi](https://img.shields.io/pypi/v/geoweaver-cwl.svg)](https://pypi.org/project/geoweaver-cwl/) +![example workflow]( +https://img.shields.io/github/actions/workflow/status/ESIPFed/Geoweaver/release_workflow.yml?style=for-the-badge +) +[![License]( +https://img.shields.io/github/license/ESIPFed/Geoweaver?style=for-the-badge +)](https://github.com/ESIPFed/Geoweaver/blob/master/LICENSE) +[![Stars]( +https://img.shields.io/github/stars/ESIPFed%2FGeoweaver?style=for-the-badge +)](https://github.com/ESIPFed/Geoweaver/stargazers) +[![Forks]( +https://img.shields.io/github/forks/ESIPFed/Geoweaver?style=for-the-badge&color=%23f2b40a +)](https://github.com/ESIPFed/Geoweaver/network/members) +[![Issues]( +https://img.shields.io/github/issues/ESIPFed/Geoweaver?style=for-the-badge&color=%2363c1ff +)](https://github.com/ESIPFed/Geoweaver/issues) [![Coverage]( +https://img.shields.io/codecov/c/github/ESIPFed/Geoweaver?style=for-the-badge +)](https://codecov.io/) +![PyPi](https://img.shields.io/pypi/v/pygeoweaver?style=for-the-badge) # [Geoweaver](https://esipfed.github.io/Geoweaver/) @@ -25,6 +40,7 @@ GeoWeaver is a community effort. Any contribution is welcome and greatly appreci Only two things basically: 1. Make it time affordable for less-coder scientists (who know nothing about WfMS) to manage their data processing workflows +2. 2. Preserve all the model run history and share them along with the code files From ddb0debde3ae4fb3d6f9a30101bd442839fa64d3 Mon Sep 17 00:00:00 2001 From: Gokul Prathin Date: Sun, 7 Apr 2024 17:15:37 -0400 Subject: [PATCH 08/17] changes to README.md * added headings * changes to badges --- README.md | 71 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index add416917..7d4ae9a26 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,20 @@ https://img.shields.io/github/issues/ESIPFed/Geoweaver?style=for-the-badge&color https://img.shields.io/codecov/c/github/ESIPFed/Geoweaver?style=for-the-badge )](https://codecov.io/) ![PyPi](https://img.shields.io/pypi/v/pygeoweaver?style=for-the-badge) - -# [Geoweaver](https://esipfed.github.io/Geoweaver/) +![Minimum Java Version](https://img.shields.io/badge/Java-11%2B-%23ed8b02?style=for-the-badge&logo=openjdk +) +![Geoweaver Docs](https://img.shields.io/badge/Docs-Geoweaver-%23c4ff7d?style=for-the-badge&logo=readthedocs&link=https%3A%2F%2Fgeoweaver.dev%2F +) ![logo](src/main/resources/static/img/geoweaver-readme-banner.png) + +### GitHub Repo: https://github.com/ESIPFed/Geoweaver +### Pygeoweaver (Python Bindings): https://github.com/ESIPFed/pygeoweaver +### Live Demo: https://geobrain.csiss.gmu.edu/Geoweaver + + + Geoweaver is an in-browser software allowing users to easily compose and execute full-stack data processing workflows via taking advantage of online spatial data facilities, high-performance computation platforms, and open-source deep learning libraries. It provides all-in-one capacity covering server management, code repository, workflow orchestration software, and history recorder. It can be run from both local and remote (distributed) machines. @@ -31,36 +40,36 @@ Why choose Geoweaver? 4) Seamlessly connect to external servers with SSH. 5) In-Built Web UI with full support for Python. -For further insights into Geoweaver, please explore the website at https://geoweaver.dev - +For further insights into Geoweaver, please explore the website at https://geoweaver.dev. GeoWeaver is a community effort. Any contribution is welcome and greatly appreciated! -# Software Goals +# Why Geoweaver? -Only two things basically: -1. Make it time affordable for less-coder scientists (who know nothing about WfMS) to manage their data processing workflows -2. +# Features -2. Preserve all the model run history and share them along with the code files -# [Installation](docs/install.md) -# [Upgrade](docs/upgrade.md) +# Installation & Guide -# [Tutorial](https://zihengsun.github.io/Geoweaver/) +[//]: # (make this in depth) -* [Create and Manipulate Hosts](docs/host.md) -* [Create and Run Processes](docs/process.md) +# Demo -* [Create, Run, and Export Workflows](docs/workflow.md) +[//]: # (Add a lot of GIFs) -* [Jupyter Recording](https://andrewmagill.github.io/#/) +# Usage -# Demo +[//]: # (colab, binder, GIFs) +[//]: # (Show all features here) + + + +# Documentation + +Learn more about Geoweaver in its official documentation at https://esipfed.github.io/Geoweaver/docs/install.html -[A live demo site](https://geobrain.csiss.gmu.edu/Geoweaver) is available. # [PyGeoWeaver](https://github.com/ESIPFed/pygeoweaver) @@ -74,30 +83,24 @@ Thanks to our many contributors! [![Contributors](https://contrib.rocks/image?repo=ESIPFed/Geoweaver)](https://github.com/ESIPFed/Geoweaver/graphs/contributors) -# Citation - -If you found Geoweaver helpful in your research, please cite: - -Sun, Z. et al., "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. - -# Dependencies +# History -This project is impossible without the support of several fantastic open source libraries. -[d3.js](https://github.com/d3/d3) - BSD 3-Clause -[graph-creator](https://github.com/cjrd/directed-graph-creator) - MIT License +# Citation -[bootstrap](https://github.com/twbs/bootstrap) - MIT License +If you found Geoweaver helpful in your research, please cite: -[CodeMirror](https://github.com/codemirror/CodeMirror) - MIT License +Sun, Z. et al., "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. -[JQuery Terminal](https://github.com/jcubic/jquery.terminal) - MIT License +# License -# [Community](docs/authors.md) +The MIT License (MIT) -# License +Copyright (c) 2015 Chris Kibble -MIT +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From f95745c1ad143f86043900aac680d3420a36f86f Mon Sep 17 00:00:00 2001 From: Gokul Prathin Date: Sun, 7 Apr 2024 17:18:02 -0400 Subject: [PATCH 09/17] changes to README.md * added existing projects --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 7d4ae9a26..9eee46d9a 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,14 @@ If you found Geoweaver helpful in your research, please cite: Sun, Z. et al., "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. +# Existing Projects + +[//]: # (https://scholar.google.com/scholar?hl=en&as_sdt=0%2C27&q=geoweaver&btnG=) +Sun, Ziheng, Liping Di, Annie Burgess, Jason A. Tullis, and Andrew B. Magill. "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. + +Sun, Ziheng, and Nicoleta Cristea. "Geoweaver for Automating ML-based High Resolution Snow Mapping Workflow." In AGU Fall Meeting Abstracts, vol. 2021, pp. IN11C-07. 2021. + + # License The MIT License (MIT) From a7292b651c077b154f7ed59efd36b4c1031c194a Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Sun, 14 Apr 2024 22:03:35 -0400 Subject: [PATCH 10/17] Update README.md --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9eee46d9a..74c84ab2c 100644 --- a/README.md +++ b/README.md @@ -96,10 +96,17 @@ Sun, Z. et al., "Geoweaver: Advanced cyberinfrastructure for managing hybrid geo # Existing Projects [//]: # (https://scholar.google.com/scholar?hl=en&as_sdt=0%2C27&q=geoweaver&btnG=) -Sun, Ziheng, Liping Di, Annie Burgess, Jason A. Tullis, and Andrew B. Magill. "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. + +Sun, Ziheng, Nicoleta C. Cristea, Kehan Yang, Ahmed Alnuaim, Lakshmi Chetana Gomaram Bikshapathireddy, Aji John, Justin Pflug et al. "Making machine learning-based snow water equivalent forecasting research productive and reusable by Geoweaver." In AGU fall meeting abstracts, vol. 2022, pp. IN23A-04. 2022. Sun, Ziheng, and Nicoleta Cristea. "Geoweaver for Automating ML-based High Resolution Snow Mapping Workflow." In AGU Fall Meeting Abstracts, vol. 2021, pp. IN11C-07. 2021. +Sun, Ziheng, Liping Di, Jason Tullis, Annie Bryant Burgess, and Andrew Magill. "Geoweaver: Connecting Dots for Artificial Intelligence in Geoscience." In AGU Fall Meeting Abstracts, vol. 2020, pp. IN011-02. 2020. + +Sun, Ziheng, Liping Di, Annie Burgess, Jason A. Tullis, and Andrew B. Magill. "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. + +Sun, Ziheng, Liping Di, Jason Tullis, Annie Bryant Burgess, and Andrew Magill. "Geoweaver: Connecting Dots for Artificial Intelligence in Geoscience." In AGU Fall Meeting Abstracts, vol. 2020, pp. IN011-02. 2020. + # License From 27d4d99a11adb13b9e6767a0f76598d418ba87a5 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:05:42 -0400 Subject: [PATCH 11/17] Update README.md Added features, Installation guide, History --- README.md | 182 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 175 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 74c84ab2c..aa920472f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ https://img.shields.io/github/issues/ESIPFed/Geoweaver?style=for-the-badge&color )](https://github.com/ESIPFed/Geoweaver/issues) [![Coverage]( https://img.shields.io/codecov/c/github/ESIPFed/Geoweaver?style=for-the-badge )](https://codecov.io/) -![PyPi](https://img.shields.io/pypi/v/pygeoweaver?style=for-the-badge) +![PyPi](https://img.shields.io/pypi/v/pygeoweaver?style=for-the-badge) ![Minimum Java Version](https://img.shields.io/badge/Java-11%2B-%23ed8b02?style=for-the-badge&logo=openjdk ) ![Geoweaver Docs](https://img.shields.io/badge/Docs-Geoweaver-%23c4ff7d?style=for-the-badge&logo=readthedocs&link=https%3A%2F%2Fgeoweaver.dev%2F @@ -34,7 +34,8 @@ Geoweaver is an in-browser software allowing users to easily compose and execute It can be run from both local and remote (distributed) machines. -Why choose Geoweaver? +# Why choose Geoweaver? + 1) Safely Store all your progress along the way. 2) Stay organised and productive through out your years-long research 4) Seamlessly connect to external servers with SSH. @@ -43,17 +44,156 @@ Why choose Geoweaver? For further insights into Geoweaver, please explore the website at https://geoweaver.dev. GeoWeaver is a community effort. Any contribution is welcome and greatly appreciated! -# Why Geoweaver? +# Features + +1) **Host Management**: + - Register machines via SSH as hosts for running processes. + - Add Jupyter Servers as host resources for interaction and workflow editing. +2) **Process Variety**: + - Add various types of processes, such as bash scripts for data downloading. -# Features +3) **Jupyter Notebook Integration**: + - Upload or import Jupyter notebooks. + - Intercept websocket traffic to save notebook versions, enabling easy revision history access. + +4) **Process History and Logging**: + - Detailed history of every process run, including logs and outputs, is stored. + +5) **Workflow Management**: + - Link processes to create workflows for parallel or sequential execution across different resources. + - All aspects of workflow management are centralized within GeoWeaver. + +# Geoweaver Installation Guide + +Geoweaver is a powerful tool for geospatial data processing, offering a range of features and capabilities. This guide will walk you through the steps to install Geoweaver on your system. + +## Prerequisites + +Before you begin, ensure that you have the following dependencies installed: + +- Java 1.8 or higher (OpenJDK 8 or higher) +- Docker (required only for the Docker installation method) + +## Installation Methods + +Geoweaver can be installed using one of the following methods: + +1. **Quick Install** +2. **Build from Source** +3. **Install using Docker** + +Choose the method that best suits your environment and requirements. + +### 1. Quick Install + +The Quick Install method is the fastest and most straightforward way to install Geoweaver. + +1. Head over to the official Geoweaver website and download the latest version of `geoweaver.jar`. +2. Navigate to the directory where `geoweaver.jar` is saved and execute the following command in your terminal: + +```shell +java -jar geoweaver.jar +``` + +3. Open your web browser and go to `http://localhost:8070/Geoweaver/` to access the Geoweaver interface. + +### 2. Build from Source + +If you prefer to build Geoweaver from the source code, follow these steps: + +1. Clone the Geoweaver repository from GitHub: + +```shell +git clone https://github.com/geoweaver/geoweaver.git +``` + +2. Navigate to the cloned repository directory and build Geoweaver using Maven: + +```shell +mvn install +``` + +3. After a successful build, the Geoweaver jar package will be located under the directory: `Geoweaver/target/Geoweaver-.jar`. + +### 3. Install using Docker + +Docker provides an easy and efficient way to deploy Geoweaver using containers. + +1. Install Docker Desktop on your system if you haven't already. +2. Pull the Geoweaver Docker image from Docker Hub: + +```shell +docker pull jensensun/geoweaver +``` +3. Launch Geoweaver in a Docker container with the following command: +```shell +docker run -t -i -v :/home/marsvegan/ -p 8070:8070 jensensun/geoweaver +``` -# Installation & Guide +**Note:** Replace `` with the path to your home directory. -[//]: # (make this in depth) +This command mounts your current home directory into the Docker container, maps the port so you can access Geoweaver from your browser, and uses the published Docker image URL in DockerHub. +4. Optionally, you can create an alias to simplify the command: + +```shell +alias geoweaver="docker run -t -i -v :/home/marsvegan/ -p 8070:8070 jensensun/geoweaver" +``` + +5. Open a web browser and input `http://localhost:8070/Geoweaver`. Geoweaver should load shortly. + +## Setting up an HTTP Proxy for Remote Access + +When deploying Geoweaver to a public server, the default port `8070` is normally blocked. To access Geoweaver remotely, you need to set up a proxy in the HTTP server. This guide uses Apache 2.4.39, but it should work for any newer version. For older versions, there might be changes. + +1. Open your default site HTTP configuration file `/etc/apache2/sites-available/000-default.conf`. +2. Add the following lines into the code block of ``: + +```shell +ProxyPass /Geoweaver/jupyter-socket ws://localhost:8070/Geoweaver/jupyter-socket +ProxyPassReverse /Geoweaver/jupyter-socket ws://localhost:8070/Geoweaver/jupyter-socket + +ProxyPass /Geoweaver/workflow-socket ws://localhost:8070/Geoweaver/workflow-socket +ProxyPassReverse /Geoweaver/workflow-socket ws://localhost:8070/Geoweaver/workflow-socket + +ProxyPass /Geoweaver/command-socket ws://localhost:8070/Geoweaver/command-socket +ProxyPassReverse /Geoweaver/command-socket ws://localhost:8070/Geoweaver/command-socket + +ProxyPass /Geoweaver/terminal-socket ws://localhost:8070/Geoweaver/terminal-socket +ProxyPassReverse /Geoweaver/terminal-socket ws://localhost:8070/Geoweaver/terminal-socket + +ProxyPass "/Geoweaver" "http://localhost:8070/Geoweaver" +ProxyPassReverse "/Geoweaver" "http://localhost:8070/Geoweaver" +``` + +3. Restart Apache after making these changes: + +```shell +service apache2 restart +``` + +## Resetting the Password for Localhost + +If you forget or need to reset the password for Geoweaver on localhost, follow these steps: + +1. For the Quick Install method, run the following command in your terminal: + +```shell +java -jar geoweaver.jar resetpassword +``` + +2. For the Docker installation method, use the following command: + +```shell +docker run -t -i -v :/home/marsvegan/ -p 8070:8070 jensensun/geoweaver resetpassword +``` + +**Note:** Replace `` with the path to your home directory. + +Congratulations! You've successfully installed Geoweaver on your system. Enjoy using this powerful tool for your geospatial data processing needs. # Demo @@ -83,8 +223,35 @@ Thanks to our many contributors! [![Contributors](https://contrib.rocks/image?repo=ESIPFed/Geoweaver)](https://github.com/ESIPFed/Geoweaver/graphs/contributors) -# History +# Geoweaver History + +## Version 1.0 (July 2020) + +The first stable release of Geoweaver was launched in July 2020 after nearly a year of active development. Key features included: + +* Support for various vector and raster data formats +* Interactive mapping with pan, zoom, and layer control +* Basic geoprocessing tools (buffer, clip, dissolve, etc.) +* Python scripting interface for automation + +Despite being an early version, Geoweaver quickly gained traction among GIS enthusiasts and developers due to its modern architecture and extensibility. +## Version 2.0 (March 2022) + +After incorporating feedback from the user community, the Geoweaver team released version 2.0 in March 2022. This major update focused on performance improvements and added several highly requested features: + +* Multiprocessing support for faster geoprocessing +* 3D visualization and terrain analysis tools +* Improved symbology and labeling options +* Integration with popular spatial databases + +Version 2.0 solidified Geoweaver's position as a powerful open-source GIS solution and attracted interest from various industries and research institutions. + +## Version 3.0 (Upcoming) + +The Geoweaver development team is currently working on version 3.0, which is expected to be released in late 2024. + +With each new release, the Geoweaver project continues to push the boundaries of open-source GIS software, providing users with a flexible and powerful platform for spatial data management and analysis. # Citation @@ -93,6 +260,7 @@ If you found Geoweaver helpful in your research, please cite: Sun, Z. et al., "Geoweaver: Advanced cyberinfrastructure for managing hybrid geoscientific AI workflows." ISPRS International Journal of Geo-Information 9, no. 2 (2020): 119. + # Existing Projects [//]: # (https://scholar.google.com/scholar?hl=en&as_sdt=0%2C27&q=geoweaver&btnG=) From 790b81f7029da86ab69f8e091b3592ce5e5aa505 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Tue, 14 May 2024 09:30:30 -0400 Subject: [PATCH 12/17] Update README.md --- README.md | 124 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index aa920472f..e4c77ed84 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ GeoWeaver is a community effort. Any contribution is welcome and greatly appreci - Link processes to create workflows for parallel or sequential execution across different resources. - All aspects of workflow management are centralized within GeoWeaver. -# Geoweaver Installation Guide +# [Geoweaver Installation Guide](docs/install.md) Geoweaver is a powerful tool for geospatial data processing, offering a range of features and capabilities. This guide will walk you through the steps to install Geoweaver on your system. @@ -75,128 +75,10 @@ Before you begin, ensure that you have the following dependencies installed: - Java 1.8 or higher (OpenJDK 8 or higher) - Docker (required only for the Docker installation method) -## Installation Methods - -Geoweaver can be installed using one of the following methods: - -1. **Quick Install** -2. **Build from Source** -3. **Install using Docker** - -Choose the method that best suits your environment and requirements. - -### 1. Quick Install - -The Quick Install method is the fastest and most straightforward way to install Geoweaver. - -1. Head over to the official Geoweaver website and download the latest version of `geoweaver.jar`. -2. Navigate to the directory where `geoweaver.jar` is saved and execute the following command in your terminal: - -```shell -java -jar geoweaver.jar -``` - -3. Open your web browser and go to `http://localhost:8070/Geoweaver/` to access the Geoweaver interface. - -### 2. Build from Source - -If you prefer to build Geoweaver from the source code, follow these steps: - -1. Clone the Geoweaver repository from GitHub: - -```shell -git clone https://github.com/geoweaver/geoweaver.git -``` - -2. Navigate to the cloned repository directory and build Geoweaver using Maven: - -```shell -mvn install -``` - -3. After a successful build, the Geoweaver jar package will be located under the directory: `Geoweaver/target/Geoweaver-.jar`. - -### 3. Install using Docker - -Docker provides an easy and efficient way to deploy Geoweaver using containers. - -1. Install Docker Desktop on your system if you haven't already. -2. Pull the Geoweaver Docker image from Docker Hub: - -```shell -docker pull jensensun/geoweaver -``` - -3. Launch Geoweaver in a Docker container with the following command: - -```shell -docker run -t -i -v :/home/marsvegan/ -p 8070:8070 jensensun/geoweaver -``` - -**Note:** Replace `` with the path to your home directory. - -This command mounts your current home directory into the Docker container, maps the port so you can access Geoweaver from your browser, and uses the published Docker image URL in DockerHub. - -4. Optionally, you can create an alias to simplify the command: - -```shell -alias geoweaver="docker run -t -i -v :/home/marsvegan/ -p 8070:8070 jensensun/geoweaver" -``` - -5. Open a web browser and input `http://localhost:8070/Geoweaver`. Geoweaver should load shortly. - -## Setting up an HTTP Proxy for Remote Access - -When deploying Geoweaver to a public server, the default port `8070` is normally blocked. To access Geoweaver remotely, you need to set up a proxy in the HTTP server. This guide uses Apache 2.4.39, but it should work for any newer version. For older versions, there might be changes. - -1. Open your default site HTTP configuration file `/etc/apache2/sites-available/000-default.conf`. -2. Add the following lines into the code block of ``: - -```shell -ProxyPass /Geoweaver/jupyter-socket ws://localhost:8070/Geoweaver/jupyter-socket -ProxyPassReverse /Geoweaver/jupyter-socket ws://localhost:8070/Geoweaver/jupyter-socket - -ProxyPass /Geoweaver/workflow-socket ws://localhost:8070/Geoweaver/workflow-socket -ProxyPassReverse /Geoweaver/workflow-socket ws://localhost:8070/Geoweaver/workflow-socket - -ProxyPass /Geoweaver/command-socket ws://localhost:8070/Geoweaver/command-socket -ProxyPassReverse /Geoweaver/command-socket ws://localhost:8070/Geoweaver/command-socket - -ProxyPass /Geoweaver/terminal-socket ws://localhost:8070/Geoweaver/terminal-socket -ProxyPassReverse /Geoweaver/terminal-socket ws://localhost:8070/Geoweaver/terminal-socket - -ProxyPass "/Geoweaver" "http://localhost:8070/Geoweaver" -ProxyPassReverse "/Geoweaver" "http://localhost:8070/Geoweaver" -``` - -3. Restart Apache after making these changes: - -```shell -service apache2 restart -``` - -## Resetting the Password for Localhost - -If you forget or need to reset the password for Geoweaver on localhost, follow these steps: - -1. For the Quick Install method, run the following command in your terminal: - -```shell -java -jar geoweaver.jar resetpassword -``` - -2. For the Docker installation method, use the following command: - -```shell -docker run -t -i -v :/home/marsvegan/ -p 8070:8070 jensensun/geoweaver resetpassword -``` - -**Note:** Replace `` with the path to your home directory. - -Congratulations! You've successfully installed Geoweaver on your system. Enjoy using this powerful tool for your geospatial data processing needs. - # Demo +[A live demo site](https://geobrain.csiss.gmu.edu/Geoweaver) is available. + [//]: # (Add a lot of GIFs) # Usage From d994822ea61f810e666e0bef1d2e7fc5509ac6c4 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Wed, 15 May 2024 15:29:54 -0400 Subject: [PATCH 13/17] Add files via upload --- .../static/img/Geoweaver new banner.png | Bin 0 -> 61900 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/static/img/Geoweaver new banner.png diff --git a/src/main/resources/static/img/Geoweaver new banner.png b/src/main/resources/static/img/Geoweaver new banner.png new file mode 100644 index 0000000000000000000000000000000000000000..3322c7e9128bee9ba13ab0be28eaa9c5e3df0af7 GIT binary patch literal 61900 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 Date: Wed, 15 May 2024 15:33:19 -0400 Subject: [PATCH 14/17] Rename Geoweaver new banner.png to Geoweaver-new-banner.png --- ...aver new banner.png => Geoweaver-new-banner.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/static/img/{Geoweaver new banner.png => Geoweaver-new-banner.png} (100%) diff --git a/src/main/resources/static/img/Geoweaver new banner.png b/src/main/resources/static/img/Geoweaver-new-banner.png similarity index 100% rename from src/main/resources/static/img/Geoweaver new banner.png rename to src/main/resources/static/img/Geoweaver-new-banner.png From 37567f831b0040f25a41e0a5bb6f31367f124acf Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Wed, 15 May 2024 15:34:36 -0400 Subject: [PATCH 15/17] Rename Geoweaver-new-banner.png to geoweaver-new-banner.png --- ...aver-new-banner.png => geoweaver-new-banner.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/static/img/{Geoweaver-new-banner.png => geoweaver-new-banner.png} (100%) diff --git a/src/main/resources/static/img/Geoweaver-new-banner.png b/src/main/resources/static/img/geoweaver-new-banner.png similarity index 100% rename from src/main/resources/static/img/Geoweaver-new-banner.png rename to src/main/resources/static/img/geoweaver-new-banner.png From 225bfd367c58542eb9081a2764327c3d70314084 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Wed, 15 May 2024 15:35:18 -0400 Subject: [PATCH 16/17] Update README.md banner update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e4c77ed84..363b4945f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ https://img.shields.io/codecov/c/github/ESIPFed/Geoweaver?style=for-the-badge ![Geoweaver Docs](https://img.shields.io/badge/Docs-Geoweaver-%23c4ff7d?style=for-the-badge&logo=readthedocs&link=https%3A%2F%2Fgeoweaver.dev%2F ) -![logo](src/main/resources/static/img/geoweaver-readme-banner.png) +![logo](src/main/resources/static/img/geoweaver-new-banner.png) ### GitHub Repo: https://github.com/ESIPFed/Geoweaver From 786414a86c6183a4716d253ac42b8b28242837e4 Mon Sep 17 00:00:00 2001 From: JYOSHREDDY <102822880+JYOSHREDDY@users.noreply.github.com> Date: Tue, 21 May 2024 02:33:45 -0400 Subject: [PATCH 17/17] Update README.md Added two new features --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 363b4945f..8b2594cf2 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,14 @@ GeoWeaver is a community effort. Any contribution is welcome and greatly appreci - Link processes to create workflows for parallel or sequential execution across different resources. - All aspects of workflow management are centralized within GeoWeaver. +6) **Boosts Data Pipeline's Tangibility**: + - Geoweaver provides an intuitive, interactive interface for visualizing data workflows, making it easier for users to understand and manage complex data pipelines. + - This clear visualization helps users to see the connections and dependencies between different components of their workflows. + +7) **Enhances Research Productivity and Reduces Work Anxiety**: + - Geoweaver has automated scheduling and execution of tasks, researchers can set up their workflows to run at specified times or conditions without manual intervention. + - This automation reduces the burden of monitoring and manual execution, allowing researchers to focus on analysis and innovation. + # [Geoweaver Installation Guide](docs/install.md) Geoweaver is a powerful tool for geospatial data processing, offering a range of features and capabilities. This guide will walk you through the steps to install Geoweaver on your system.