maap-api-nasa

NASA Python implementation of the MAAP API specification

https://github.com/MAAP-Project/maap-api-nasa

Science Score: 36.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    6 of 18 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.9%) to scientific vocabulary

Keywords from Contributors

earth-observation
Last synced: 10 months ago · JSON representation

Repository

NASA Python implementation of the MAAP API specification

Basic Info
Statistics
  • Stars: 9
  • Watchers: 6
  • Forks: 4
  • Open Issues: 14
  • Releases: 53
Created almost 8 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog License

README.md

NASA MAAP API

The joint ESA-NASA Multi-Mission Algorithm and Analysis Platform (MAAP) focuses on developing a collaborative data system enabling collocated data, processing, and analysis tools for NASA and ESA datasets. The NASA MAAP API adheres to the joint ESA-NASA MAAP API specification currently in development. This joint architectural approach enables NASA and ESA to each run independent MAAPs, while ultimately sharing common facilities to share and integrate collocated platform services.

Development server: https://api.dit.maap-project.org/api

I. Local development using docker

bash cd docker docker-compose -f docker-compose-local.yml up

II. Local development using poetry and virtualenv

Prerequisites: * poetry * https://python-poetry.org/docs/#installation * postgresql * Linux: sudo apt-get install postgresql python-psycopy2 libpq-dev * Mac OSx: brew install postgresql * python3.9+

bash cd maap-api-nasa poetry install

First run: Configure the database.

  1. Add a new user called maapuser (A fix for 'role does not exist')

    NOTE: You may need to use sudo -u postgres before postgres commands. bash createuser maapuser

  2. Create an empty postgres db (maap) (a fix for 'database maap does not exist'): bash createdatabase maap

  3. OPTIONAL: PyCharm configuration, if using the PyCharm IDE:

  • Script path: ./api/maapapp.py
  • Environment variables: PYTHONUNBUFFERED=1
  • Python interpreter: Python 3.9
  • Working directory: ./api

(Obsolete?) Config Titiler endpoint and maap-api-host

In the settings.py (i.e., maap-api-nasa/api/settings.py):

```python

settings.py

APIHOSTURL = 'http://0.0.0.0:5000/' # For local testing

...

The endpoint obtained after doing Titiler deployment

TILER_ENDPOINT = 'https://XXX.execute-api.us-east-1.amazonaws.com'

If running the tiler locally, this can be TILER_ENDPOINT = 'http://localhost:8000'

```

Run the app:

bash poetry shell FLASK_APP=api/maapapp.py flask run --host=0.0.0.0

Some issues you may experience while running the above line:

  • Allowing using postgres without login (A fix for 'fe_sendauth: no password supplied'):

bash sudo vi /etc/postgresql/9.5/main/pg_hba.conf #(the location may be different depend on OS and postgres version)

# Reconfig as follows: local all all trust host all all 127.0.0.1/32 trust host all all ::1/0 trust # Save pg_hba.conf

bash # Restart postgresql sudo /etc/init.d/postgresql reload sudo /etc/init.d/postgresql start

Running tests

When using docker-compose to start the app it is possible to run the tests locally if you first update the settings.py DATABASE_URL value to specify localhost as the servername instead of db (DO NOT check in this change).

bash python -m unittest test/api/endpoints/test_wmts_get_tile.py

If you are running the latest version of Titiler, use the following local test scripts: while keeping the server in the previous step running (i.e., local maap-api-nasa). Open a new terminal

```bash poetry env use $(poetry env info -e)

If you are running the latest version of Titiler, then use the following test scripts:

python -m unittest -v test/api/endpoints/testwmtsgettilenewtitiler.py python -m unittest -v test/api/endpoints/testwmtsgetcapabilitiesnewtitiler.py ```

III. User Accounts

A valid MAAP API token must be included in the header for any API request. An Earthdata account is required to access the MAAP API. To obtain a token, URS credentials must be provided as shown below:

bash curl -X POST --header "Content-Type: application/json" -d "{ \"username\": \"urs_username\", \"password\": \"urs_password\" }" https://api.dit.maap-project.org/token

Comments:

  • After running the local maap-api-nasa, go to http://0.0.0.0:5000/api to see the APIs.

  • Or running the your own test scripts with:

bash curl -X POST --header "Content-Type: application/json" -d "{ \"username\": \"urs_username\", \"password\": \"urs_password\" }" http://0.0.0.0:5000/token

Owner

  • Name: MAAP-Project
  • Login: MAAP-Project
  • Kind: organization

GitHub Events

Total
  • Create event: 43
  • Issues event: 6
  • Release event: 15
  • Watch event: 1
  • Delete event: 22
  • Member event: 1
  • Issue comment event: 45
  • Push event: 218
  • Pull request review comment event: 11
  • Pull request review event: 25
  • Pull request event: 36
  • Fork event: 1
Last Year
  • Create event: 43
  • Issues event: 6
  • Release event: 15
  • Watch event: 1
  • Delete event: 22
  • Member event: 1
  • Issue comment event: 45
  • Push event: 218
  • Pull request review comment event: 11
  • Pull request review event: 25
  • Pull request event: 36
  • Fork event: 1

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 599
  • Total Committers: 18
  • Avg Commits per committer: 33.278
  • Development Distribution Score (DDS): 0.653
Past Year
  • Commits: 72
  • Committers: 6
  • Avg Commits per committer: 12.0
  • Development Distribution Score (DDS): 0.722
Top Committers
Name Email Commits
bsatoriu b****s@j****v 208
Aimee Barciauskas a****e@d****g 81
namratam n****g@g****m 69
Malarout n****t@j****v 54
bsatoriu b****u@j****v 46
grallewellyn g****n@j****v 42
Anil Natha A****a@j****v 23
Frank Greguska 8****e 19
TonHai1111 t****i@g****m 15
Sujen Shah s****2 14
Marjorie Lucas m****s@j****v 10
Anthony Lukach a****h@g****m 6
Phil Varner p****r@g****m 5
echyam e****m@g****m 3
Chuck Daniels c****4@g****m 1
Jamison French j****h@g****m 1
Laura Alisic Jewell l****l 1
Slesa Adhikari s****d@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 19
  • Total pull requests: 154
  • Average time to close issues: 2 months
  • Average time to close pull requests: 12 days
  • Total issue authors: 9
  • Total pull request authors: 16
  • Average comments per issue: 1.47
  • Average comments per pull request: 0.64
  • Merged pull requests: 127
  • Bot issues: 0
  • Bot pull requests: 2
Past Year
  • Issues: 4
  • Pull requests: 37
  • Average time to close issues: 4 months
  • Average time to close pull requests: 2 days
  • Issue authors: 3
  • Pull request authors: 5
  • Average comments per issue: 0.25
  • Average comments per pull request: 1.16
  • Merged pull requests: 25
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sujen1412 (7)
  • frankinspace (4)
  • marjo-luc (3)
  • bsatoriu (2)
  • abarciauskas-bgse (1)
  • emileten (1)
  • omshinde (1)
  • anilnatha (1)
  • wildintellect (1)
  • hrodmn (1)
Pull Request Authors
  • bsatoriu (73)
  • sujen1412 (25)
  • grallewellyn (23)
  • marjo-luc (15)
  • abarciauskas-bgse (13)
  • anilnatha (12)
  • frankinspace (10)
  • TonHai1111 (5)
  • NamrataM (2)
  • jjfrench (2)
  • philvarner (1)
  • emileten (1)
  • chuckwondo (1)
  • dependabot[bot] (1)
  • slesaad (1)
Top Labels
Issue Labels
bug (3) enhancement (3) help wanted (1)
Pull Request Labels
bug (2) dependencies (1)

Dependencies

requirements.txt pypi
  • PyJWT *
  • Werkzeug ==0.16.1
  • boto3 ==1.9.199
  • flask *
  • flask-restplus *
  • flask_sqlalchemy *
  • gitpython *
  • mapproxy *
  • marshmallow-sqlalchemy *
  • natsort *
  • owslib *
  • pillow *
  • psycopg2 *
  • pycryptodome *
  • pyproj ==1.9.6
  • pyshp *
  • requests *
  • requests_file *
  • xmltodict *
docker/Dockerfile docker
  • python 3.9 build
docker/docker-compose.yml docker
  • maap-api-nasa latest
  • postgres 14.5