nasa / podaacpy

A python utility library for interacting with NASA JPL's PO.DAAC
http://podaacpy.readthedocs.org/en/latest/
Apache License 2.0
73 stars 45 forks source link

Add OceanWorks API's #119

Open lewismc opened 6 years ago

lewismc commented 6 years ago

OceanWorks is a JPL project which provides a rich set of API's we can interact with. We should add this functionality for the next release.

Omkar20895 commented 6 years ago

@lewismc can I help on this improvement? Thanks

lewismc commented 6 years ago

+1 omkar

On Wed, Mar 14, 2018 at 22:27 Omkar notifications@github.com wrote:

@lewismc https://github.com/lewismc can I help on this imporovement? Thanks

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nasa/podaacpy/issues/119#issuecomment-373265146, or mute the thread https://github.com/notifications/unsubscribe-auth/ABHJl1j8BjBRp7lEWhkYX5yDST_HTrgoks5tefvEgaJpZM4SrD4s .

--

Lewis Dr. Lewis J. McGibbney Ph.D, B.Sc Skype: lewis.john.mcgibbney

Omkar20895 commented 6 years ago

Hi @lewismc I have started working on the above. I just want to let you know the sub routine names:

subroutine1: get_dataset_list() subroutine2: get_dataset_stats() subroutine3: not sure what would be the appropriate sub routine name, open to suggestions.

subroutines = no.of end points.

Thanks.

lewismc commented 6 years ago

Hi @fgreg can you list what you envisage a Python APi to look like for OceanWorks? I will deal with MUDROD, thank you for any input I really appreciate it.

fgreg commented 6 years ago

We have the start of a python client for NEXUS here: https://github.com/apache/incubator-sdap-nexus/tree/master/client

NEXUS is the service responsible for serving the endpoints currently described on https://oceanworks.jpl.nasa.gov/

So I'm not sure that you want to re-implement these things on your own or maybe just include the nexuscli as a dependency to this project?

nexuscli is still under development as well and it doesn't have all of the endpoints covered yet either, so if you want to contribute that would be appropriate.

lewismc commented 6 years ago

Hi @fgreg thank you,

...or maybe just include the nexuscli as a dependency to this project?

That's exactly what I want to do.

nexuscli is still under development as well and it doesn't have all of the endpoints covered yet either, so if you want to contribute that would be appropriate.

Is there an open JIRA issue for adding then endpoints ? Thanks

fgreg commented 6 years ago

@lewismc No they haven't been opened yet. Here's one recently done by Nga though that could be used as an example: https://issues.apache.org/jira/projects/SDAP/issues/SDAP-47

lewismc commented 5 years ago

I messed around a bit and found that this was much easier than I expected

from nexuscli import nexuscli
nexuscli.set_target("http://oceanworks.jpl.nasa.gov/")
...Target set to http://oceanworks.jpl.nasa.gov/
nexuscli.dataset_list()
[OrderedDict([('shortName', 'AQUARIUS_L3_SSS_v5_7day'), ('start', '1970-01-16T05:05:16Z'), ('end', '1970-01-17T14:05:16Z')]), OrderedDict([('shortName', 'ASCATB-L2-Coastal'), ('start', '1970-01-16T15:24:32Z'), ('end', '1970-01-18T11:13:27Z')]), OrderedDict([('shortName', 'AVHRR_OI_L4_GHRSST_NCEI'), ('start', '1970-01-05T06:15:50Z'), ('end', '1970-01-18T22:13:26Z')]), OrderedDict([('shortName', 'CCMP_V2.0_L3.0_WIND_SPEED'), ('start', '1970-01-07T09:34:33Z'), ('end', '1970-01-18T12:44:16Z')]), OrderedDict([('shortName', 'CCMP_V2.0_L3.0_WIND_SPEED_CLIM'), ('start', '1970-01-01T00:00:00Z'), ('end', '1970-01-01T00:00:00Z')]), OrderedDict([('shortName', 'G5NR_TOTEXTTAU_500'), ('start', '1970-01-14T09:24:28Z'), ('end', '1970-01-14T09:44:36Z')]), OrderedDict([('shortName', 'GPM_3IMERGHHE'), ('start', '1970-01-17T03:23:02Z'), ('end', '1970-01-18T21:30:56Z')]), OrderedDict([('shortName', 'MODIS_L3_sst_4km'), ('start', '1970-01-12T20:55:37Z'), ('end', '1970-01-18T22:13:26Z')]), OrderedDict([('shortName', 'MODIS_L3m_DAY_CHL_chlor_a_4km'), ('start', '1970-01-12T20:55:39Z'), ('end', '1970-01-18T22:25:00Z')]), OrderedDict([('shortName', 'MUR25-JPL-L4-GLOB-v4.1'), ('start', '1970-01-12T20:08:42Z'), ('end', '1970-01-18T21:30:46Z')]), OrderedDict([('shortName', 'MUR25-JPL-L4-GLOB-v4.1-CLIM'), ('start', '1970-01-01T00:00:00Z'), ('end', '1970-01-01T00:00:00Z')]), OrderedDict([('shortName', 'OSCAR_L4_OC'), ('start', '1970-01-09T07:54:57Z'), ('end', '1970-01-18T21:24:22Z')]), OrderedDict([('shortName', 'RAPID_WSWM'), ('start', '1970-01-10T20:41:38Z'), ('end', '1970-01-11T14:11:13Z')]), OrderedDict([('shortName', 'SMAP_L2B_SSS'), ('start', '1970-01-17T12:36:59Z'), ('end', '1970-01-18T01:19:10Z')]), OrderedDict([('shortName', 'SMAP_SSS_L3_MONTHLY_500'), ('start', '1970-01-17T12:59:02Z'), ('end', '1970-01-18T15:17:16Z')]), OrderedDict([('shortName', 'SMAP_SSS_L3_MONTHLY_500_CLIM'), ('start', '1970-01-01T00:00:00Z'), ('end', '1970-01-01T00:00:00Z')]), OrderedDict([('shortName', 'SMAP_SSS_L3_v3_8day_70km'), ('start', '1970-01-17T12:36:43Z'), ('end', '1970-01-18T22:04:04Z')]), OrderedDict([('shortName', 'SMAP_SSS_L3_v3_monthly_70km'), ('start', '1970-01-17T12:59:02Z'), ('end', '1970-01-18T21:09:21Z')]), OrderedDict([('shortName', 'TELLUS_GRACE_MASCON_CRI_GRID_RL06_V1_LAND'), ('start', '1970-01-12T18:40:19Z'), ('end', '1970-01-18T07:37:55Z')]), OrderedDict([('shortName', 'TELLUS_GRACE_MASCON_CRI_GRID_RL06_V1_OCEAN'), ('start', '1970-01-12T18:40:19Z'), ('end', '1970-01-18T07:37:55Z')]), OrderedDict([('shortName', 'TRMM_3B42_daily'), ('start', '1970-01-11T05:26:47Z'), ('end', '1970-01-17T19:11:54Z')]), OrderedDict([('shortName', 'TRMM_3B42_daily_CLIM'), ('start', '1970-01-01T00:00:00Z'), ('end', '1970-01-01T00:00:00Z')])]

As nexuscli has not been released as of yet it means that it cannot be used directly as a dependency however I am going to clone it and then simply add it to setup.py as described here. We can then build out the nexus interaction directly here within Podaacpy