def manipulate(self, leu, asn, matchings): ( leu_ca, leu_cb, leu_cg ) = self.build_leu( leu = leu ) ( asn_ca, asn_cb, asn_cg ) = self.build_asn( asn = asn ) callback = collector() import operator graph_structure_comparison.mcgregor_common_subgraphs_unique( graph1 = leu, graph2 = asn, vertex_equality = operator.eq, edge_equality = lambda l, r: abs( l - r ) <= 0.1, callback = callback, ) self.assertEqual( len( callback.collected ), matchings ) largest = max( callback.collected, key = len ) self.assertEqual( len( largest ), 3 ) self.assertEqual( sorted( [ ( leu.vertex_label( p[0] ), asn.vertex_label( p[1] ) ) for p in largest ] ), [ ( "C", "C" ), ( "C", "C" ), ( "CA", "CA" ) ], ) self.assertEqual( set( largest ), set( [ ( leu_ca, asn_ca ), ( leu_cb, asn_cb ), ( leu_cg, asn_cg ) ] ), )
def __init__( self, molecule1, molecule2, is_valid, maxsteps = 500, vertex_equality = None, edge_equality = None, ): if vertex_equality is None: import operator vertex_equality = operator.eq if edge_equality is None: import operator edge_equality = operator.eq self.molecule1 = molecule1.atom_for self.molecule2 = molecule2.atom_for self.is_valid = is_valid self.best = [] self.steps = 0 self.maxsteps = maxsteps from graph import graph_structure_comparison as gsc gsc.mcgregor_common_subgraphs_unique( graph1 = molecule1.graph, graph2 = molecule2.graph, vertex_equality = vertex_equality, edge_equality = edge_equality, callback = self, )
def __init__( self, molecule1, molecule2, is_valid, maxsteps=500, vertex_equality=None, edge_equality=None, ): if vertex_equality is None: import operator vertex_equality = operator.eq if edge_equality is None: import operator edge_equality = operator.eq self.molecule1 = molecule1.atom_for self.molecule2 = molecule2.atom_for self.is_valid = is_valid self.best = [] self.steps = 0 self.maxsteps = maxsteps from graph import graph_structure_comparison as gsc gsc.mcgregor_common_subgraphs_unique( graph1=molecule1.graph, graph2=molecule2.graph, vertex_equality=vertex_equality, edge_equality=edge_equality, callback=self, )
def manipulate(self, leu, asn, matchings): (leu_ca, leu_cb, leu_cg) = self.build_leu(leu=leu) (asn_ca, asn_cb, asn_cg) = self.build_asn(asn=asn) callback = collector() import operator graph_structure_comparison.mcgregor_common_subgraphs_unique( graph1=leu, graph2=asn, vertex_equality=operator.eq, edge_equality=lambda l, r: abs(l - r) <= 0.1, callback=callback, ) self.assertEqual(len(callback.collected), matchings) largest = max(callback.collected, key=len) self.assertEqual(len(largest), 3) self.assertEqual( sorted([(leu.vertex_label(p[0]), asn.vertex_label(p[1])) for p in largest]), [("C", "C"), ("C", "C"), ("CA", "CA")], ) self.assertEqual( set(largest), set([(leu_ca, asn_ca), (leu_cb, asn_cb), (leu_cg, asn_cg)]), )