Source code for wbia.algo.graph.tests.test_graph_iden

# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function
import utool as ut
from wbia.algo.graph import demo
from wbia.algo.graph.state import POSTV, NEGTV, INCMP, UNREV


(print, rrr, profile) = ut.inject2(__name__)


[docs]def test_incomp_inference(): infr = demo.demodata_infr(num_pccs=0) # Make 2 consistent and 2 inconsistent CCs infr.add_feedback((1, 2), POSTV) infr.add_feedback((2, 3), POSTV) infr.add_feedback((3, 4), POSTV) infr.add_feedback((4, 1), POSTV) # ----- infr.add_feedback((11, 12), POSTV) infr.add_feedback((12, 13), POSTV) infr.add_feedback((13, 14), POSTV) infr.add_feedback((14, 11), POSTV) infr.add_feedback((12, 14), NEGTV) # ----- infr.add_feedback((21, 22), POSTV) infr.add_feedback((22, 23), POSTV) infr.add_feedback((23, 21), NEGTV) # ----- infr.add_feedback((31, 32), POSTV) infr.add_feedback((32, 33), POSTV) infr.add_feedback((33, 31), POSTV) infr.add_feedback((2, 32), NEGTV) infr.add_feedback((3, 33), NEGTV) infr.add_feedback((12, 21), NEGTV) # ----- # Incomparable within CCs print('==========================') infr.add_feedback((1, 3), INCMP) infr.add_feedback((1, 4), INCMP) infr.add_feedback((1, 2), INCMP) infr.add_feedback((11, 13), INCMP) infr.add_feedback((11, 14), INCMP) infr.add_feedback((11, 12), INCMP) infr.add_feedback((1, 31), INCMP) infr.add_feedback((2, 32), INCMP) infr.add_feedback((12, 21), INCMP) infr.add_feedback((23, 21), INCMP) infr.add_feedback((12, 14), INCMP) print('Final state:') print(ut.repr4(sorted(infr.gen_edge_attrs('decision'))))
[docs]def test_unrev_inference(): infr = demo.demodata_infr(num_pccs=0) # Make 2 consistent and 2 inconsistent CCs infr.add_feedback((1, 2), POSTV) infr.add_feedback((2, 3), POSTV) infr.add_feedback((3, 4), POSTV) infr.add_feedback((4, 1), POSTV) # ----- infr.add_feedback((11, 12), POSTV) infr.add_feedback((12, 13), POSTV) infr.add_feedback((13, 14), POSTV) infr.add_feedback((14, 11), POSTV) infr.add_feedback((12, 14), NEGTV) # ----- infr.add_feedback((21, 22), POSTV) infr.add_feedback((22, 23), POSTV) infr.add_feedback((23, 21), NEGTV) # ----- infr.add_feedback((31, 32), POSTV) infr.add_feedback((32, 33), POSTV) infr.add_feedback((33, 31), POSTV) infr.add_feedback((2, 32), NEGTV) infr.add_feedback((3, 33), NEGTV) infr.add_feedback((12, 21), NEGTV) # ----- # Incomparable within CCs print('==========================') infr.add_feedback((1, 3), UNREV) infr.add_feedback((1, 4), UNREV) infr.add_feedback((1, 2), UNREV) infr.add_feedback((11, 13), UNREV) infr.add_feedback((11, 14), UNREV) infr.add_feedback((11, 12), UNREV) infr.add_feedback((1, 31), UNREV) infr.add_feedback((2, 32), UNREV) infr.add_feedback((12, 21), UNREV) infr.add_feedback((23, 21), UNREV) infr.add_feedback((12, 14), UNREV) print('Final state:') print(ut.repr4(sorted(infr.gen_edge_attrs('decision'))))
[docs]def test_pos_neg(): infr = demo.demodata_infr(num_pccs=0) # Make 3 inconsistent CCs infr.add_feedback((1, 2), POSTV) infr.add_feedback((2, 3), POSTV) infr.add_feedback((3, 4), POSTV) infr.add_feedback((4, 1), POSTV) infr.add_feedback((1, 3), NEGTV) # ----- infr.add_feedback((11, 12), POSTV) infr.add_feedback((12, 13), POSTV) infr.add_feedback((13, 11), NEGTV) # ----- infr.add_feedback((21, 22), POSTV) infr.add_feedback((22, 23), POSTV) infr.add_feedback((23, 21), NEGTV) # ----- # Fix inconsistency infr.add_feedback((23, 21), POSTV) # Merge inconsistent CCS infr.add_feedback((1, 11), POSTV) # Negative edge within an inconsistent CC infr.add_feedback((2, 13), NEGTV) # Negative edge external to an inconsistent CC infr.add_feedback((12, 21), NEGTV) # ----- # Make inconsistency from positive infr.add_feedback((31, 32), POSTV) infr.add_feedback((33, 34), POSTV) infr.add_feedback((31, 33), NEGTV) infr.add_feedback((32, 34), NEGTV) infr.add_feedback((31, 34), POSTV) # Fix everything infr.add_feedback((1, 3), POSTV) infr.add_feedback((2, 4), POSTV) infr.add_feedback((32, 34), POSTV) infr.add_feedback((31, 33), POSTV) infr.add_feedback((13, 11), POSTV) infr.add_feedback((23, 21), POSTV) infr.add_feedback((1, 11), NEGTV) print('Final state:') print(ut.repr4(sorted(infr.gen_edge_attrs('decision'))))
if __name__ == '__main__': r""" CommandLine: export PYTHONPATH=$PYTHONPATH:/home/joncrall/code/wbia/wbia/algo/graph/tests python ~/code/wbia/wbia/algo/graph/tests/test_graph_iden.py test_pos_neg python ~/code/wbia/wbia/algo/graph/tests/test_graph_iden.py test_unrev_inference python ~/code/wbia/wbia/algo/graph/tests/test_graph_iden.py test_incomp_inference python ~/code/wbia/wbia/algo/graph/tests/test_graph_iden.py --allexamples """ import multiprocessing multiprocessing.freeze_support() # for win32 import utool as ut # NOQA ut.doctest_funcs() # import ubelt as ub