def write_current_matrix(): f = file("%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 write_current_matrix(): f = file( '%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 write_current_matrix(): f = file('%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 saveToHistory(self): """ saveToHistory() -> None Save the current contents to the history """ # Generate filename current = datetime.datetime.now() tmpDir = system.temporary_directory() fn = (tmpDir + "hist_" + current.strftime("%Y_%m_%d__%H_%M_%S") + "_" + str(current.microsecond)+".png") if self.saveToPNG(fn): self._historyImages.append(fn)
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 = file('%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
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 = file('%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