Commit 987c2e55 authored by jlaura's avatar jlaura Committed by GitHub
Browse files

Merge pull request #76 from jlaura/master

cleans the library, removes cameras and spatial - move to another lib
parents a608860c e403b3f9
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -21,4 +21,3 @@ from . import data
from . import examples
from . import geofuncs
from . import utils
from . import spatial

plio/camera/__init__.py

deleted100644 → 0
+0 −20
Original line number Diff line number Diff line
import importlib
import warnings

cam = importlib.find_loader('usgscam')
cycsm_isd = importlib.find_loader('cycsm.isd')

if cam:
    cam = cam.load_module()

if cycsm_isd:
    cycsm_isd = cycsm_isd.load_module()

def conditional_cameras(func):
    def cam_check(*args, **kwargs):
        if cam:
            return func(*args, **kwargs)
        else:
            warning.warn('Trying to call a camera method, but usgscam is not installed.')
            return None
        return cam_check
 No newline at end of file

plio/camera/csm.py

deleted100644 → 0
+0 −37
Original line number Diff line number Diff line
import datetime
import json

import requests

from plio.utils.utils import find_in_dict
from plio.io.io_json import NumpyEncoder
from plio.camera import conditional_cameras, cam, cycsm_isd

def data_from_cube(header):
    data = {}
    data['START_TIME'] = find_in_dict(header, 'StartTime')
    data['SPACECRAFT_NAME'] = find_in_dict(header, 'SpacecraftName')
    data['INSTRUMENT_NAME'] = find_in_dict(header, 'InstrumentId')
    data['SAMPLING_FACTOR'] = find_in_dict(header, 'SpatialSumming')
    data['SAMPLE_FIRST_PIXEL'] = find_in_dict(header, 'SampleFirstPixel')
    data['IMAGE'] = {}
    data['IMAGE']['LINES'] = find_in_dict(header, 'Lines')
    data['IMAGE']['SAMPLES'] = find_in_dict(header, 'Samples')
    data['TARGET_NAME'] = find_in_dict(header, 'TargetName')
    data['LINE_EXPOSURE_DURATION'] = find_in_dict(header, 'LineExposureDuration')
    data['SPACECRAFT_CLOCK_START_COUNT'] = find_in_dict(header, 'SpacecraftClockCount')
    return data

@conditional_cameras
def create_camera(obj, url='http://smalls:8002/api/1.0/missions/mars_reconnaissance_orbiter/csm_isd'):
    
    data = json.dumps(data_from_cube(obj.metadata), cls=NumpyEncoder)
    r = requests.post(url, data=data)

    # Get the ISD back and instantiate a local ISD for the image
    isd = r.json()['data']['isd']
    i = cycsm_isd.Isd.loads(isd)

    # Create the plugin and camera as usual
    plugin = cam.genericls.Plugin()
    return plugin.from_isd(i, plugin.modelname(0))
 No newline at end of file

plio/camera/tests/__init__.py

deleted100644 → 0
+0 −0

Empty file deleted.

plio/camera/tests/test_csm.py

deleted100644 → 0
+0 −45
Original line number Diff line number Diff line
import datetime
import json
from unittest import mock

import pytest
import pvl

from plio.camera import csm, cam, conditional_cameras
from plio.examples import get_path

def mock_requests_post(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if 'mars_reconnaissance_orbiter' in args[0]:
        with open(get_path('ctx.response'), 'r') as f:
            resp = json.load(f)
        return MockResponse(resp, 200)

    return MockResponse(None, 404)


@pytest.fixture
def header():
    return pvl.load(get_path('ctx.pvl'))

@pytest.fixture
def req_obj():
    return 

@pytest.mark.skipif(cam is None, reason="Cameras not installed")
def test_data_from_cube(header):
    data = csm.data_from_cube(header)
    assert data['START_TIME'] == datetime.datetime(2008, 9, 17, 5, 8, 10, 820000)

@pytest.mark.skipif(cam is None, reason="Cameras not installed")
@mock.patch('requests.post', side_effect=mock_requests_post)
def test_create_camera(header):
    created_camera = csm.create_camera(header)
    assert isinstance(create_camera, cam.genericls.SensorModel)
Loading