Table of Contents

    
    
    In [16]:
    from pyciss import opusapi, io
    # from pytest import tmpdir
    
    opus = opusapi.OPUS()
    
    
    
    In [12]:
    img_id = 'N1875229393'
    # img_id = 'N1695760475'
    
    
    
    In [18]:
    from pyciss.downloader import download_and_calibrate
    
    
    
    In [20]:
    download_and_calibrate(img_id)
    
    
    
    In [14]:
    opus.query_image_id(img_id)[0]
    
    
    
    
    Found 1 obsids.
    
    Out[14]:
    Raw:
    Label:
    https://pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2113/data/1875228144_1875491141/N1875229393_1.LBL
    Image:
    https://pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2113/data/1875228144_1875491141/N1875229393_1.IMG
    Calibrated:
    Label:
    https://pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2113/data/1875228144_1875491141/N1875229393_1_CALIB.LBL
    Image:
    https://pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2113/data/1875228144_1875491141/N1875229393_1_CALIB.IMG
    
    
    In [15]:
    opus.download_results(calib=True)
    
    
    
    
    Downloading N1875229393_1.IMG
    Downloading N1875229393_1.LBL
    Downloading N1875229393_1_CALIB.IMG
    Downloading N1875229393_1_CALIB.LBL
    
    Out[15]:
    '/Volumes/USB128II/ciss/db/N1875229393'
    
    
    In [17]:
    io.PathManager(img_id)
    
    
    
    
    Out[17]:
    cal_cub: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.cal.cub
    calib_img: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1_CALIB.IMG
    calib_label: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1_CALIB.LBL
    cubepath: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.cal.dst.map.cub
    dst_cub: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.cal.dst.cub
    raw_cub: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.cub
    raw_image: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.IMG
    raw_label: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.LBL
    tif: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.cal.dst.map.tif
    undestriped: /Volumes/USB128II/ciss/db/N1875229393/N1875229393_1.cal.map.cub
    
    
    In [9]:
    opus.obsids[0].small_img_url
    
    
    
    
    Out[9]:
    'https://pds-rings.seti.org/holdings/browse/COISS_2xxx/COISS_2113/data/1875228144_1875491141/N1875229393_1_small.jpg'
    
    
    In [4]:
    url = 'https://tools.pds-rings.seti.org/opus/#/target=S+Rings&instrument=Cassini+ISS&COISScamera=Narrow+Angle&RINGGEOprojectedradialresolution1=&RINGGEOprojectedradialresolution2=1&RINGGEOringradius1=75000&RINGGEOringradius2=92000&view=search&browse=gallery&colls_browse=gallery&page=1&gallery_data_viewer=true&limit=100&order=time1&cols=opusid,instrumentid,planet,target,time1,observationduration&widgets=RINGGEOringradius1,RINGGEOprojectedradialresolution1,COISScamera,instrument,planet,target&widgets2=&detail='
    
    
    
    In [5]:
    url.split('&')
    
    
    
    
    Out[5]:
    ['https://tools.pds-rings.seti.org/opus/#/target=S+Rings',
     'instrument=Cassini+ISS',
     'COISScamera=Narrow+Angle',
     'RINGGEOprojectedradialresolution1=',
     'RINGGEOprojectedradialresolution2=1',
     'RINGGEOringradius1=75000',
     'RINGGEOringradius2=92000',
     'view=search',
     'browse=gallery',
     'colls_browse=gallery',
     'page=1',
     'gallery_data_viewer=true',
     'limit=100',
     'order=time1',
     'cols=opusid,instrumentid,planet,target,time1,observationduration',
     'widgets=RINGGEOringradius1,RINGGEOprojectedradialresolution1,COISScamera,instrument,planet,target',
     'widgets2=',
     'detail=']
    
    
    In [15]:
    from pyciss.downloader import download_and_calibrate
    
    
    
    In [16]:
    img_id
    
    
    
    
    Out[16]:
    'N1875229393_1'
    
    
    In [17]:
    opus.obsids[0].img_id
    
    
    
    
    Out[17]:
    'N1875229393_1'
    
    
    In [20]:
    download_and_calibrate(img_id)
    
    
    
    In [20]:
    import requests
    
    
    
    In [ ]:
    
    
    
    
    In [16]:
    opusapi.base_url
    
    
    
    
    Out[16]:
    'https://tools.pds-rings.seti.org/opus/api'
    
    
    In [11]:
    type(opus.obsids[0])
    
    
    
    
    Out[11]:
    pyciss.opusapi.OPUSObsID
    
    
    In [19]:
    def test_download_results():
        opus.download_results(savedir=tmpdir.name)
        assert (Path(tmpdir.name) / 'N1695760475' / 'N1695760475_1.IMG').exists()
        assert (Path(tmpdir.name) / 'N1695760475' / 'N1695760475_1.LBL').exists()
    
    
    
    In [20]:
    test_download_results()
    
    
    
    
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-20-72727033bbee> in <module>()
    ----> 1 test_download_results()
    
    <ipython-input-19-913c9fe58d90> in test_download_results()
          1 def test_download_results():
    ----> 2     opus.download_results(savedir=tmpdir.name)
          3     assert (Path(tmpdir.name) / 'N1695760475' / 'N1695760475_1.IMG').exists()
          4     assert (Path(tmpdir.name) / 'N1695760475' / 'N1695760475_1.LBL').exists()
    
    NameError: name 'tmpdir' is not defined
    
    
    In [4]:
    # test_download_previews
    opus.download_previews(savedir=tmpdir.name)
    assert (Path(tmpdir.name) / 'N1695760475' / 'N1695760475_1_med.jpg').exists()
    
    
    
    
    Downloading N1695760475_1_med.jpg
    
    
    
    In [9]:
    # test_get_metadata
    meta = opus.get_metadata(opus.obsids[0])
    assert meta.image['duration'] == 38.0
    assert 'emission1' in meta.surface_geom
    assert meta.general['declination1'] == 3.556135
    assert meta.iss['GAIN_MODE_ID'] == '29 ELECTRONS PER DN'
    
    
    
    
    Requesting http://tools.pds-rings.seti.org/opus/api/metadata/S_IMG_CO_ISS_1695760475_N.json
    
    
    
    In [10]:
    # test_get_between_times_strings
    opus.get_between_times('2005-10-10:00:00:00', '2005-10-11:00:00:00')
    # this should find 7 items
    assert len(opus.obsids) == 7
    
    
    
    
    Found 7 obsids.
    
    
    
    In [11]:
    # test_get_between_times_datetimes
    import datetime as dt
    t1 = dt.datetime(2005, 10, 9)
    t2 = dt.datetime(2005, 10, 10)
    opus.get_between_times(t1, t2)
    assert len(opus.obsids) == 12
    
    
    
    
    Found 12 obsids.
    
    
    
    In [12]:
    # test_get_radial_res_query
    d = opus.get_radial_res_query(0.1, 0.2)
    assert isinstance(d, dict)
    assert d['instrumentid'] == 'Cassini+ISS'
    assert d['projectedradialresolution1'] == 0.1
    assert d['projectedradialresolution2'] == 0.2
    assert d['target'] == 'S+RINGS'
    
    
    
    In [14]:
    # test_get_between_resolutions
    opus.get_between_resolutions(0.1,0.5)
    # should find 89 items
    assert len(opus.obsids) == 90
    
    
    
    
    Found 90 obsids.
    
    
    
    In [15]:
    # cleanup
    tmpdir.cleanup()