tos2ca-user-interface

Web front end and API architecture for TOS2CA

https://github.com/nasa-jpl/tos2ca-user-interface

Science Score: 75.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
    Organization nasa-jpl has institutional domain (www.jpl.nasa.gov)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.1%) to scientific vocabulary

Scientific Fields

Computer Science Computer Science - 84% confidence
Last synced: 4 months ago · JSON representation ·

Repository

Web front end and API architecture for TOS2CA

Basic Info
  • Host: GitHub
  • Owner: nasa-jpl
  • License: apache-2.0
  • Language: JavaScript
  • Default Branch: main
  • Size: 4.35 MB
Statistics
  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created over 1 year ago · Last pushed 5 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Governance

README.md

User Interface

DOI

Language Language Language

The user-interface library is part of the of the TOS2CA Project. For more information, visit the TOS2CA website at https://nasa-jpl.github.io/tos2ca-documentation/.

Overview

The TOS2CA user interface is designed to submit jobs to the TOS2CA system. This can be done through the graphical interface on the website or through RESTful API calls.

Requirements

Web interface

The system is designed to be run as part of a LAMP configure and is written in PHP. It requires: - Access to the TOS2CA MySQL database - AWS SDK for PHP - Version 3 (not included in this repo) - Access to an S3 bucket - Data Access Server - Leaflet - Bootstrap - Datatables

Notes

  • You will have to update paths to any local files.
  • You will have to update the name of the S3 bucket you want to point to.
  • Look for places in the PHP or JS code that reference URLs, S3 bins, etc. and make sure to update them.
  • Styling for the site is barebones. Bootstrap is linked to the pages but minimial use of it is made. It is up to the user to add styling to the front end pages to their preferences.

APIs

  • FastAPI for Python
  • Access to the TOS2CA MySQL database
  • See the requirements.txt file for additional dependencies

Website Pages

The following is a list of pages offered by the website and their function: - Phenomenon Definition (index.php): The main page of the website, where users submit PhDef job parameters - Phenomenon Definition Viewer (phenomenonviewer.php): Users can view a table of contents of anomalies that their PhDef job produced, along with footprint of those anomalies on a mask - Predefined Phenomenon (phenomenonpredefined.php): Page that contains searchable tables of mask files for pre-defined phenomenon, like tropical cyclones and wildfires - Data Curation (datacuration.php): Where users can submit their Data Curation job parameters - Job Lookup (joblookup.php): Form users can use to lookup the information about jobs they have submitted - Visualization (visualization.php): Landing page for visualization tools, integrated with the data_access_server repo

API Calls

Users can submit jobs and check status using the system's APIs, based on Python's FastAPI library.

Endpoints and Examples

Submit a PhDef Job: /api/phdef/submit

curl -X POST 'https://yourwebsite.com/api/phdef/submit' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"firstName": "John", "lastName":"Doe", "email":"abc@email.com", "dataset":"GPM_MERGIR", "variable": "Tb", "startDate": "2024-05-29", "endDate": "2024-05-30", "coords": "-109.28 45.17,-109.28 64.81,-59.36 64.81,-59.36 45.17", "ineqOperator": "lessThan", "ineqValue": "12", "description": "Test"}'

PhDef Job Status: /api/phdef/status

``` https://yourwebsite.com/api/phdef/status?jobID=138

or

curl -X GET https://yourwebsite.com/api/phdef/status?jobID=138 ```

Submit a Data Curation Job: /api/data-curation/submit

curl -X POST 'https://yourwebsite.com/api/data-curation/submit' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"jobID": 146, "firstName": "Jane", "lastName":"Doe", "email":"abc@email.com", "dataset":"GPM_MERGIR", "variable": "Tb", "description": "Test"}'

Data Curation Status: /api/data-curation/status

``` https://tos2ca-dev1.jpl.nasa.gov/api/data-curation/status?jobID=142

or

curl -X GET https://tos2ca-dev1.jpl.nasa.gov/api/data-curation/status?jobID=142 ```

Known Issues and Considerations

  1. The API endpoints in /api/main.py need to be running for the visualization tool (in data_access_server) to work.
  2. Several pages and endpoints take advantage of the AWS SDK ListObjectsV2 API to return a list of files. Note that it has a limit and will only return up to 1000 files at a time.

Owner

  • Name: NASA Jet Propulsion Laboratory
  • Login: nasa-jpl
  • Kind: organization
  • Email: github@jpl.nasa.gov
  • Location: Pasadena, California, US

A world leader in the robotic exploration of space

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: >-
  Thematic Observation Search, Segmentation, Collation and
  Analysis (TOS2CA)
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Ziad
    family-names: Haddad
    email: zsh@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0000-0002-2608-6274'
  - given-names: Jason
    family-names: Eriksen
    affiliation: Columbia University
  - given-names: Ryan
    family-names: Fuller
    email: Ryan.A.Fuller@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0000-0001-5785-9949'
  - given-names: Alexandre
    family-names: Guillaume
    email: Alexandre.Guillaume@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0000-0002-4322-5862'
  - given-names: Svetla
    family-names: Hristova-Veleva
    email: Svetla.Hristova@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0000-0003-2048-5167'
  - given-names: Brian
    family-names: Knosp
    email: Brian.Knosp@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0000-0002-2266-8883'
  - given-names: Phillip
    family-names: Le
    affiliation: Columbia University
  - given-names: Flynn
    family-names: Platt
    email: Flynn.Platt@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0009-0000-9246-2576'
  - given-names: Federica
    family-names: Polverari
    email: federica.polverari@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
    orcid: 'https://orcid.org/0000-0002-2038-4983'
  - given-names: Randy
    family-names: Sawaya
    email: randy.sawaya@primer.ai
    affiliation: Primer
    orcid: 'https://orcid.org/0000-0003-1771-634X'
  - given-names: Quoc
    family-names: Vu
    email: qvu@jpl.nasa.gov
    affiliation: Jet Propulsion Laboratory
identifiers:
  - type: doi
    value: 10.5281/zenodo.16053702
    description: >-
      Link to an archived copy of the TOS2CA v2 software on
      Zenodo
repository-code: 'https://github.com/nasa-jpl/tos2ca-documentation'
url: 'https://nasa-jpl.github.io/tos2ca-documentation/'
abstract: >-
  Thematic Observation Search, Segmentation, Collation and
  Analysis (TOS2CA) is a user-driven, data-centric system
  that identifies, collates, statistically characterizes,
  and serves Earth science data relevant to a given
  phenomenon. It facilitates the collation and analysis of
  data from disparate sources and makes it possible for
  scientists to establish science traceability requirements,
  quantify detection thresholds, define uncertainty
  requirements, and establish data sufficiency to formulate
  truly innovative missions and research investigations.
license: Apache-2.0
version: v2.0
date-released: '2025-08-01'
preferred-citation:
  authors:
    - family-names: Haddad
      given-names: Ziad
    - family-names: Eriksen
      given-names: Jason
    - family-names: Fuller
      given-names: Ryan
    - family-names: Guillaume
      given-names: Alexandre
    - family-names: Hristova-Veleva
      given-names: Svetla
    - family-names: Knosp
      given-names: Brian
    - family-names: Le
      given-names: Phillip
    - family-names: Platt
      given-names: Flynn
    - family-names: Polverarai
      given-names: Federica
    - family-names: Sawaya
      given-names: Randy
    - family-names: Vu
      given-names: Quoc
  title: Thematic Observation Search, Segmentation, Collation and Analysis (TOS2CA)
  type: software
  year: 2025
  version: v2.0
  doi: 10.5281/zenodo.16053702

GitHub Events

Total
  • Delete event: 1
  • Push event: 1
  • Public event: 1
  • Create event: 2
Last Year
  • Delete event: 1
  • Push event: 1
  • Public event: 1
  • Create event: 2

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

requirements.txt pypi
  • Jinja2 ==3.1.4
  • MarkupSafe ==2.1.5
  • PyMySQL ==1.1.1
  • PyYAML ==6.0.1
  • Pygments ==2.18.0
  • aiobotocore ==2.13.0
  • aiohttp ==3.9.5
  • aioitertools ==0.11.0
  • aiosignal ==1.3.1
  • annotated-types ==0.7.0
  • anyio ==4.4.0
  • async-timeout ==4.0.3
  • attrs ==23.2.0
  • botocore ==1.34.106
  • certifi ==2024.7.4
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • dnspython ==2.6.1
  • email_validator ==2.2.0
  • exceptiongroup ==1.2.1
  • fastapi ==0.111.0
  • fastapi-cli ==0.0.4
  • frozenlist ==1.4.1
  • fsspec ==2024.6.0
  • h11 ==0.14.0
  • httpcore ==1.0.5
  • httptools ==0.6.1
  • httpx ==0.27.0
  • idna ==3.7
  • jmespath ==1.0.1
  • markdown-it-py ==3.0.0
  • mdurl ==0.1.2
  • multidict ==6.0.5
  • orjson ==3.10.5
  • pydantic ==2.7.4
  • pydantic_core ==2.18.4
  • python-dateutil ==2.9.0.post0
  • python-dotenv ==1.0.1
  • python-multipart ==0.0.9
  • requests ==2.32.3
  • rich ==13.7.1
  • s3fs ==2024.6.0
  • shellingham ==1.5.4
  • six ==1.16.0
  • sniffio ==1.3.1
  • starlette ==0.37.2
  • typer ==0.12.3
  • typing_extensions ==4.12.2
  • ujson ==5.10.0
  • urllib3 ==1.26.19
  • uvicorn ==0.30.1
  • uvloop ==0.19.0
  • watchfiles ==0.22.0
  • websockets ==12.0
  • wrapt ==1.16.0
  • yarl ==1.9.4