def create_report_affine(state, report_id): y_dot_mean = state.result.y_dot_stats.mean y_dot_cov = state.result.y_dot_stats.covariance y_dot_inf = state.result.y_dot_stats.information y_dot_min = state.result.y_dot_stats.minimum y_dot_max = state.result.y_dot_stats.maximum y_mean = state.result.y_stats.mean y_cov = state.result.y_stats.covariance y_inf = state.result.y_stats.information y_min = state.result.y_stats.minimum y_max = state.result.y_stats.maximum u_mean = state.result.u_stats.mean u_inf = state.result.u_stats.information u_cov = state.result.u_stats.covariance N = state.result.N.get_value() report_y_dot = create_report_var( name="y_dot", mean=y_dot_mean, cov=y_dot_cov, inf=y_dot_inf, minimum=y_dot_min, maximum=y_dot_max ) report_y = create_report_var(name="y", mean=y_mean, cov=y_cov, inf=y_inf, minimum=y_min, maximum=y_max) report_u = create_report_var(name="u", mean=u_mean, cov=u_cov, inf=u_inf) T = state.result.T.get_value() report_T = create_report_figure_tensors(T, report_id="T", caption="Learned T") Nreport = Node("n-report") with Nreport.data("N", N).data_file("N", "image/png") as filename: pylab.figure() for i in range(N.shape[1]): v = N[:, i].squeeze() pylab.plot(v) pylab.savefig(filename) pylab.close() f = Nreport.figure("nfig") f.sub("N/N") bT = state.result.bT.get_value() report_bT = create_report_figure_tensors(bT, report_id="bT", caption="Learned bT") bTn = state.result.bTn.get_value() report_bTn = create_report_figure_tensors(bTn, report_id="bTn", caption="Learned bTn") node = Node(id=report_id, children=[report_y, report_y_dot, report_u, report_T, Nreport, report_bT, report_bTn]) return node
def analyze_olfaction_covariance(covariance, receptors): ''' Covariance: n x n covariance matrix. Positions: list of n positions ''' positions = [pose.get_2d_position() for pose, sens in receptors] #@UnusedVariable positions = array(positions).transpose().squeeze() require_shape(square_shape(), covariance) n = covariance.shape[0] require_shape((2, n), positions) distances = create_distance_matrix(positions) correlation = cov2corr(covariance) flat_distances = distances.reshape(n * n) flat_correlation = correlation.reshape(n * n) # let's fit a polynomial deg = 4 poly = polyfit(flat_distances, flat_correlation, deg=deg) knots = linspace(min(flat_distances), max(flat_distances), 2000) poly_int = polyval(poly, knots) poly_fder = polyder(poly) fder = polyval(poly_fder, distances) Ttheta = create_olfaction_Ttheta(positions, fder) Tx, Ty = create_olfaction_Txy(positions, fder, distances) report = Node('olfaction-theory') report.data('flat_distances', flat_distances) report.data('flat_correlation', flat_correlation) with report.data_file('dist_vs_corr', 'image/png') as filename: pylab.figure() pylab.plot(flat_distances, flat_correlation, '.') pylab.plot(knots, poly_int, 'r-') pylab.xlabel('distance') pylab.ylabel('correlation') pylab.title('Correlation vs distance') pylab.legend(['data', 'interpolation deg = %s' % deg]) pylab.savefig(filename) pylab.close() with report.data('fder', fder).data_file('fder', 'image/png') as filename: pylab.figure() pylab.plot(knots, polyval(poly_fder, knots), 'r-') pylab.title('f der') pylab.savefig(filename) pylab.close() report.data('distances', distances) report.data('correlation', correlation) report.data('covariance', covariance) report.data('f', polyval(poly, distances)) f = report.figure(id='cor-vs-distnace', caption='Estimated kernels', shape=(3, 3)) f.sub('dist_vs_corr') f.sub('fder') f.sub('f', display='scale') f.sub('distances', display='scale') f.sub('correlation', display='posneg') f.sub('covariance', display='posneg') T = numpy.zeros(shape=(3, Tx.shape[0], Tx.shape[1])) T[0, :, :] = Tx T[1, :, :] = Ty T[2, :, :] = Ttheta T_report = create_report_figure_tensors(T, report_id='tensors', caption="Predicted learned tensors") report.add_child(T_report) return report