def write_current_matrix(): f = open("%s/%s_%03d.v" % (temporary_directory(), self._debug_matrix_file, step), "w") x = v.reshape(len(self._p1.modules), len(self._p2.modules)) for i in xrange(len(self._p1.modules)): for j in xrange(len(self._p2.modules)): f.write("%f " % x[i, j]) f.write("\n") f.close()
def test_write_and_read_vistrail(self): self.assertTrue(get_api().new_vistrail()) basic = self.get_basic_package() s1, s2 = self.create_modules(basic) fname = os.path.join(temporary_directory(), "test_write_read.vt") self.assertTrue(get_api().save_vistrail(fname)) self.assertTrue(os.path.exists(fname)) get_api().close_vistrail() self.assertTrue(get_api().open_vistrail(fname)) self.assertEqual(get_api().controller.current_version, 4) get_api().close_vistrail()
def solve(self): def write_debug_pipeline_positions(pipeline, mmap, f): f.write("%d %d\n" % (len(pipeline.modules), len(pipeline.connections))) for k, v in mmap.iteritems(): f.write("%d %d\n" % (k, v)) c = pipeline_centroid(pipeline) mn, mx = pipeline_bbox(pipeline) f.write("%f %f %f %f\n" % (mn.x, mn.y, mx.x, mx.y)) for i, m in pipeline.modules.iteritems(): nc = m.center - c f.write("%d %s %f %f\n" % (i, m.name, nc.x, nc.y)) for i, c in pipeline.connections.iteritems(): f.write("%d %d %d\n" % (i, c.sourceId, c.destinationId)) if self._debug: out = open("%s/pipelines.txt" % temporary_directory(), "w") write_debug_pipeline_positions(self._p1, self._g1_vertex_map, out) write_debug_pipeline_positions(self._p2, self._g2_vertex_map, out) self.print_s8ys() self._debug_matrix_file = "input_matrix" r_in = self.solve_v(self._input_vertex_s8y) self._debug_matrix_file = "output_matrix" r_out = self.solve_v(self._output_vertex_s8y) r_in = r_in.reshape(len(self._p1.modules), len(self._p2.modules)) r_out = r_out.reshape(len(self._p1.modules), len(self._p2.modules)) s = r_in.sum(1) s[s == 0.0] = 1 r_in /= s s = r_out.sum(1) s[s == 0.0] = 1 r_out /= s r_combined = scipy.multiply(r_in, r_out) # Breaks ties on combined similarity r_in = r_in * 0.9 + r_combined * 0.1 r_out = r_out * 0.9 + r_combined * 0.1 if self._debug: print "== G1 ==" for (k, v) in sorted(self._g1_vertex_map.iteritems(), key=operator.itemgetter(1)): print v, k, self._p1.modules[k].name print "== G2 ==" for (k, v) in sorted(self._g2_vertex_map.iteritems(), key=operator.itemgetter(1)): print v, k, self._p2.modules[k].name print "input similarity" self.pm(r_in, digits=3) print "output similarity" self.pm(r_out, digits=3) print "combined similarity" self.pm(r_combined, digits=3) inputmap = dict( [ (self._g1_vertex_map.inverse[ix], self._g2_vertex_map.inverse[v[0, 0]]) for (ix, v) in enumerate(r_in.argmax(1)) ] ) outputmap = dict( [ (self._g1_vertex_map.inverse[ix], self._g2_vertex_map.inverse[v[0, 0]]) for (ix, v) in enumerate(r_out.argmax(1)) ] ) combinedmap = dict( [ (self._g1_vertex_map.inverse[ix], self._g2_vertex_map.inverse[v[0, 0]]) for (ix, v) in enumerate(r_combined.argmax(1)) ] ) # print inputmap # print outputmap return inputmap, outputmap, combinedmap