diff --git a/plio/io/io_controlnetwork.py b/plio/io/io_controlnetwork.py index 57774f9670d728e9e6ad8224e4b86c332f06a496..13ddfd54bc9a0fc81990965e1b320e5bdfd1ce84 100644 --- a/plio/io/io_controlnetwork.py +++ b/plio/io/io_controlnetwork.py @@ -270,6 +270,9 @@ class IsisStore(object): arr = arr.ravel().tolist() point_spec.aprioriCovar.extend(arr) + # If field is repeated you must extend instead of assign + elif cnf._CONTROLPOINTFILEENTRYV0002.fields_by_name[attr].label == 3: + getattr(point_spec, attr).extend(g.iloc[0][df_attr]) else: setattr(point_spec, attr, attrtype(g.iloc[0][df_attr])) @@ -284,7 +287,11 @@ class IsisStore(object): # Un-mangle common attribute names between points and measures df_attr = self.measure_field_map.get(attr, attr) if df_attr in g.columns: - setattr(measure_spec, attr, attrtype(m[df_attr])) + # If field is repeated you must extend instead of assign + if cnf._CONTROLPOINTFILEENTRYV0002_MEASURE.fields_by_name[attr].label == 3: + getattr(measure_spec, attr).extend(m[df_attr]) + else: + setattr(measure_spec, attr, attrtype(m[df_attr])) # ISIS pixels are centered on (0.5, 0.5). NDArrays are (0,0) based. measure_spec.sample = m['sample'] + 0.5 measure_spec.line = m['line'] + 0.5 diff --git a/plio/io/tests/test_io_controlnetwork.py b/plio/io/tests/test_io_controlnetwork.py index 9d13793e05518a251bdb6e1c82bb106bc2e7905b..8b628ce5de27478e6ab53e458aa29376fd9afb5d 100644 --- a/plio/io/tests/test_io_controlnetwork.py +++ b/plio/io/tests/test_io_controlnetwork.py @@ -39,12 +39,12 @@ class TestWriteIsisControlNetwork(unittest.TestCase): serial_times = {295: '1971-07-31T01:24:11.754', 296: '1971-07-31T01:24:36.970'} cls.serials = {i:'APOLLO15/METRIC/{}'.format(j) for i, j in enumerate(serial_times.values())} - columns = ['id', 'pointType', 'serialnumber', 'measureType', 'sample', 'line', 'image_index'] + columns = ['id', 'pointType', 'serialnumber', 'measureType', 'sample', 'line', 'image_index', 'pointLog', 'measureLog'] data = [] for i in range(cls.npts): - data.append((i, 2, cls.serials[0], 2, 0, 0, 0)) - data.append((i, 2, cls.serials[1], 2, 0, 0, 1)) + data.append((i, 2, cls.serials[0], 2, 0, 0, 0, [], [])) + data.append((i, 2, cls.serials[1], 2, 0, 0, 1, [], [])) df = pd.DataFrame(data, columns=columns)