Commit fef05475 authored by jlaura's avatar jlaura
Browse files

Merge pull request #23 from jlaura/nimage_matching

Nimage matching
parents 6a5a9c68 8649fb48
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ install:
  - source activate test-env

  # Install the non-conda packages if required, requirements.txt duplicates are ignored
  - conda install -c https://conda.binstar.org/menpo opencv3=3.0.0
  - conda install -c https://conda.anaconda.org/jlaura opencv3=3.0.0
  - conda install -c osgeo proj4
  - pip install -r requirements.txt
  - pip install coverage
+2 −2
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ class CSeries(pd.Series):
    """
    @property
    def _constructor(self):
        return CustomSeries # pragma: no cover
        return CSeries # pragma: no cover


class C(pd.DataFrame):
@@ -66,7 +66,7 @@ class C(pd.DataFrame):
    @property
    def n(self):
        if not getattr(self, '_n', None):
            self._n = len(self.index.levels[0])
            self._n = len(self['pid'].unique())
        return self._n

    @property
+8 −14
Original line number Diff line number Diff line
@@ -14,26 +14,20 @@ from autocnet.control import control
class TestC(unittest.TestCase):

    def setUp(self):
        ids = ['pt1','pt1', 'pt1', 'pt2', 'pt2']
        ptype = [2,2,2,2,2]
        serials = ['a', 'b', 'c', 'b', 'c']
        mtype = [2,2,2,2,2]
        x = list(range(10))
        y = list(range(10))
        pid = [1,2,3,4,1,2,3,4,1,2]
        nid = [1,2,1,2,1,2,1,2,1,2]

        multi_index = pd.MultiIndex.from_tuples(list(zip(ids, ptype, serials, mtype)),
                                    names=['Id', 'Type', 'Serial Number', 'Measure Type'])
        data = np.array([x, y, pid, nid]).T


        columns = ['Random Number']
        self.data_length = 5
        data = np.random.randn(self.data_length)

        self.C = control.C(data, index=multi_index, columns=columns)
        self.C = control.C(data, columns=['x', 'y', 'pid', 'nid'])

    def test_n_point(self):
        self.assertEqual(self.C.n,2)
        self.assertEqual(self.C.n,4)

    def test_n_measures(self):
        self.assertEqual(self.C.m, self.data_length)
        self.assertEqual(self.C.m, 10)

    def test_modified_date(self):
        self.assertEqual(self.C.modifieddate, 'Not modified')
+12 −20
Original line number Diff line number Diff line
import sys

import pvl
import numpy as np

from autocnet.fileio import ControlNetFileV0002_pb2 as cnf
from autocnet.control.control import POINT_TYPE, MEASURE_TYPE

#TODO: Protobuf3 should be a conditional import, if availble use it, otherwise bail

@@ -11,7 +9,6 @@ VERSION = 2
HEADERSTARTBYTE = 65536
DEFAULTUSERNAME = 'AutoControlNetGeneration'

FREEPOINT = 2

def to_isis(path, C, mode='w', version=VERSION,
            headerstartbyte=HEADERSTARTBYTE,
@@ -135,32 +132,27 @@ class IsisStore(object):
        """
        point_sizes = []
        point_messages = []

        for point_id in cnet.index.levels[0]:

        print(cnet)
        for pid, point in cnet.groupby('pid'):
            # Instantiate the proto spec
            point_spec = cnf.ControlPointFileEntryV0002()

            # Get the subset of the dataframe
            point = cnet.loc[point_id]

            try:
                point_spec.id = point_id
                point_spec.id = pid
            except:
                point_spec.id = str(point_id)
            point_spec.type = FREEPOINT  # Hard coded to free
                point_spec.id = str(pid)
            point_spec.type = POINT_TYPE

            # A single extend call is cheaper than many add calls to pack points
            measure_iterable = []

            for name, measure in point.iterrows():
            print(point)
            for name, row in point.iterrows():
                measure_spec = point_spec.Measure()
                serial_number = name[1]
                mtype = name[2]
                measure_spec.serialnumber = serial_number
                measure_spec.type = mtype
                measure_spec.sample = measure.x
                measure_spec.line = measure.y
                measure_spec.serialnumber = row.nid
                measure_spec.type = MEASURE_TYPE
                measure_spec.sample = row.x
                measure_spec.line = row.y

                measure_iterable.append(measure_spec)
            point_spec.measures.extend(measure_iterable)
+14 −13
Original line number Diff line number Diff line
@@ -29,21 +29,22 @@ class TestWriteIsisControlNetwork(unittest.TestCase):
                   300: '1971-07-31T01:26:17.923'}
        self.serials = ['APOLLO15/METRIC/{}'.format(i) for i in serial_times.values()]

        ids = ['pt1','pt1', 'pt1', 'pt2', 'pt2']
        ptype = [2, 2, 2, 2, 2]

        x = list(range(5))
        y = list(range(5))
        pid = [0,0,1,1,1]
        idx = pid
        serials = [self.serials[0], self.serials[1], self.serials[2],
                   self.serials[2], self.serials[3]]
        mtype = [2, 2, 2, 2, 2]

        multi_index = pd.MultiIndex.from_tuples(list(zip(ids, ptype, serials, mtype)),
                                    names=['Id', 'Type', 'Serial Number', 'Measure Type'])

        columns = ['x', 'y']
        columns = ['x', 'y', 'idx', 'pid', 'nid']
        self.data_length = 5
        data = np.random.random((self.data_length, 2))

        data = [x,y, idx, pid, serials]

        self.creation_time = strftime("%Y-%m-%d %H:%M:%S", gmtime())
        cnet = C(data, index=multi_index, columns=columns)
        cnet = C(data, index=columns).T

        io_controlnetwork.to_isis('test.net', cnet, mode='wb', targetname='Moon')

@@ -68,18 +69,18 @@ class TestWriteIsisControlNetwork(unittest.TestCase):
            self.assertEqual('Not modified', header_protocol.lastModified)

            #Repeating
            self.assertEqual([199, 135], header_protocol.pointMessageSizes)
            self.assertEqual([133, 197], header_protocol.pointMessageSizes)

    def test_create_point(self):
        with open('test.net', 'rb') as f:

            with open('test.net', 'rb') as f:
                f.seek(self.point_start_byte)
                for i, length in enumerate([199, 135]):
                for i, length in enumerate([133, 197]):
                    point_protocol = cnf.ControlPointFileEntryV0002()
                    raw_point = f.read(length)
                    point_protocol.ParseFromString(raw_point)
                    self.assertEqual('pt{}'.format(i+1), point_protocol.id)
                    self.assertEqual(str(i), point_protocol.id)
                    self.assertEqual(2, point_protocol.type)
                    for m in point_protocol.measures:
                        self.assertTrue(m.serialnumber in self.serials)
@@ -95,7 +96,7 @@ class TestWriteIsisControlNetwork(unittest.TestCase):
        self.assertEqual(5, mpoints)

        points_bytes = find_in_dict(pvl_header, 'PointsBytes')
        self.assertEqual(334, points_bytes)
        self.assertEqual(330, points_bytes)

        points_start_byte = find_in_dict(pvl_header, 'PointsStartByte')
        self.assertEqual(65621, points_start_byte)
Loading