Loading autocnet/graph/network.py +5 −3 Original line number Diff line number Diff line Loading @@ -2211,7 +2211,8 @@ class NetworkCandidateGraph(CandidateGraph): dem_file = dem.dem.file_name # Read the cnet from the db df = io_controlnetwork.db_to_df(self, ground_radius=dem_file, ground_xyz=ground_xyz, **db_kwargs) with self.session_scope() as session: df = io_controlnetwork.db_to_df(session, ground_radius=dem_file, ground_xyz=ground_xyz, **db_kwargs) # Add the covariance matrices to ground measures if dem is not None: Loading Loading @@ -2258,9 +2259,10 @@ class NetworkCandidateGraph(CandidateGraph): For example, autocnet_14 becomes 14. """ isis_network = cnet.from_isis(path) with self.session_scope() as session: io_controlnetwork.update_from_jigsaw(isis_network, self.measures, self.engine, session.bind, pointid_func=pointid_func) @classmethod Loading autocnet/io/db/controlnetwork.py +3 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ from ... import sql from sqlalchemy import text def db_to_df(ncg, ground_radius=None, ground_xyz=None, sql=sql.db_to_df_sql_string): def db_to_df(session, ground_radius=None, ground_xyz=None, sql=sql.db_to_df_sql_string): """ Given a set of points/measures in an autocnet database, generate an ISIS compliant control network. Loading @@ -36,8 +36,7 @@ def db_to_df(ncg, ground_radius=None, ground_xyz=None, sql=sql.db_to_df_sql_stri that exist on images with 3 or more measures. """ df = pd.read_sql(sql, ncg.engine) df = pd.read_sql(sql, session.bind) # measures.id DB column was read in to ensure the proper ordering of DF # so the correct measure is written as reference del df['id'] Loading Loading @@ -101,7 +100,7 @@ def copy_from_method(table, conn, keys, data_iter, pre_truncate=False, fatal_fai cur.copy_expert(sql=sql_query, file=s_buf) return cur.rowcount def update_from_jigsaw(cnet, measures, engine, pointid_func=None): def update_from_jigsaw(cnet, measures, session, pointid_func=None): """ Updates a database fields: liner, sampler, measureJigsawRejected, samplesigma, and linesigma using an ISIS control network. Loading autocnet/io/db/tests/test_controlnetwork.py +15 −8 Original line number Diff line number Diff line import sys from unittest import mock import pandas as pd import pytest from autocnet.io.db import model from autocnet.io.db.controlnetwork import db_to_df, update_from_jigsaw if sys.platform.startswith("darwin"): pytest.skip("skipping DB tests for MacOS", allow_module_level=True) def test_to_isis(session): controlnetwork = pd.DataFrame([[1,2,3,'a',0, '01010000800000000000003E4000000000000024400000000000001440'], [2,2,3,'a',0, '01010000800000000000003E4000000000000024400000000000001440'], [3,2,3,'a',1, '01010000800000000000003E4000000000000024400000000000001440'], [4,2,3,'a',1, '01010000800000000000003E4000000000000024400000000000001440'], [5,3,3,'a',2, '01010000800000000000003E4000000000000024400000000000001440'], [6,3,3,'a',2, '01010000800000000000003E4000000000000024400000000000001440']], columns=['id', 'pointtype', 'measuretype', 'identifier','pointid', 'apriori']) with mock.patch('pandas.read_sql') as mock_db_response: mock_db_response.return_value = controlnetwork def test_to_isis(session, db_controlnetwork): df = db_to_df(session.get_bind()) df = db_to_df(session.bind) assert len(df) == 6 assert df.iloc[0]['pointtype'] == 2 Loading @@ -17,7 +24,7 @@ def test_to_isis(session, db_controlnetwork): assert df.iloc[0]['measuretype'] == 3 assert df.iloc[0]['aprioriCovar'] == [] @pytest.mark.xfail def test_update_from_jigsaw(session, db_controlnetwork,): connection = session.get_bind() Loading conftest.py +22 −23 Original line number Diff line number Diff line Loading @@ -247,8 +247,7 @@ def controlnetwork(): # return session @pytest.fixture def db_controlnetwork(ncg): with ncg.session_scope() as session: def db_controlnetwork(session): # Create the images i1 = {'id':0, 'serial':'foo'} i2 = {'id':1, 'serial':'bar'} Loading Loading
autocnet/graph/network.py +5 −3 Original line number Diff line number Diff line Loading @@ -2211,7 +2211,8 @@ class NetworkCandidateGraph(CandidateGraph): dem_file = dem.dem.file_name # Read the cnet from the db df = io_controlnetwork.db_to_df(self, ground_radius=dem_file, ground_xyz=ground_xyz, **db_kwargs) with self.session_scope() as session: df = io_controlnetwork.db_to_df(session, ground_radius=dem_file, ground_xyz=ground_xyz, **db_kwargs) # Add the covariance matrices to ground measures if dem is not None: Loading Loading @@ -2258,9 +2259,10 @@ class NetworkCandidateGraph(CandidateGraph): For example, autocnet_14 becomes 14. """ isis_network = cnet.from_isis(path) with self.session_scope() as session: io_controlnetwork.update_from_jigsaw(isis_network, self.measures, self.engine, session.bind, pointid_func=pointid_func) @classmethod Loading
autocnet/io/db/controlnetwork.py +3 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ from ... import sql from sqlalchemy import text def db_to_df(ncg, ground_radius=None, ground_xyz=None, sql=sql.db_to_df_sql_string): def db_to_df(session, ground_radius=None, ground_xyz=None, sql=sql.db_to_df_sql_string): """ Given a set of points/measures in an autocnet database, generate an ISIS compliant control network. Loading @@ -36,8 +36,7 @@ def db_to_df(ncg, ground_radius=None, ground_xyz=None, sql=sql.db_to_df_sql_stri that exist on images with 3 or more measures. """ df = pd.read_sql(sql, ncg.engine) df = pd.read_sql(sql, session.bind) # measures.id DB column was read in to ensure the proper ordering of DF # so the correct measure is written as reference del df['id'] Loading Loading @@ -101,7 +100,7 @@ def copy_from_method(table, conn, keys, data_iter, pre_truncate=False, fatal_fai cur.copy_expert(sql=sql_query, file=s_buf) return cur.rowcount def update_from_jigsaw(cnet, measures, engine, pointid_func=None): def update_from_jigsaw(cnet, measures, session, pointid_func=None): """ Updates a database fields: liner, sampler, measureJigsawRejected, samplesigma, and linesigma using an ISIS control network. Loading
autocnet/io/db/tests/test_controlnetwork.py +15 −8 Original line number Diff line number Diff line import sys from unittest import mock import pandas as pd import pytest from autocnet.io.db import model from autocnet.io.db.controlnetwork import db_to_df, update_from_jigsaw if sys.platform.startswith("darwin"): pytest.skip("skipping DB tests for MacOS", allow_module_level=True) def test_to_isis(session): controlnetwork = pd.DataFrame([[1,2,3,'a',0, '01010000800000000000003E4000000000000024400000000000001440'], [2,2,3,'a',0, '01010000800000000000003E4000000000000024400000000000001440'], [3,2,3,'a',1, '01010000800000000000003E4000000000000024400000000000001440'], [4,2,3,'a',1, '01010000800000000000003E4000000000000024400000000000001440'], [5,3,3,'a',2, '01010000800000000000003E4000000000000024400000000000001440'], [6,3,3,'a',2, '01010000800000000000003E4000000000000024400000000000001440']], columns=['id', 'pointtype', 'measuretype', 'identifier','pointid', 'apriori']) with mock.patch('pandas.read_sql') as mock_db_response: mock_db_response.return_value = controlnetwork def test_to_isis(session, db_controlnetwork): df = db_to_df(session.get_bind()) df = db_to_df(session.bind) assert len(df) == 6 assert df.iloc[0]['pointtype'] == 2 Loading @@ -17,7 +24,7 @@ def test_to_isis(session, db_controlnetwork): assert df.iloc[0]['measuretype'] == 3 assert df.iloc[0]['aprioriCovar'] == [] @pytest.mark.xfail def test_update_from_jigsaw(session, db_controlnetwork,): connection = session.get_bind() Loading
conftest.py +22 −23 Original line number Diff line number Diff line Loading @@ -247,8 +247,7 @@ def controlnetwork(): # return session @pytest.fixture def db_controlnetwork(ncg): with ncg.session_scope() as session: def db_controlnetwork(session): # Create the images i1 = {'id':0, 'serial':'foo'} i2 = {'id':1, 'serial':'bar'} Loading