[IPython-dev] problem with publish_display_data?

Jonathan Taylor jonathan.taylor at stanford.edu
Wed Jun 13 18:52:31 EDT 2012


On the master branch, I am getting some unexpected behaviour when I try the
following

import numpy as np
from IPython.core.displaypub import publish_display_data

class NormalMean(object):
    """
    Sample from N(mean, sd) independently n times
    """
    tol = 5.e-2
    checkable = True

    def __init__(self, mean, sd, n, identifier):
        self.mean = mean
        self.identifier = identifier
        self.sd = sd
        self.n = n
        self.sequence = self.generate()
        self.correct_answer = np.mean(self.sequence)

    def generate(self):
        return np.round(np.random.standard_normal(self.n), 1) * self.sd +
self.mean

    @property
    def answer(self):
        return np.mean(self.sequence)

    def publish(self, return_data=False):

        data = {'text/latex': r"What is the sample mean, $\bar{X}$ of this
sequence: %s ?" % `["%0.1f" % s for s in self.sequence]`,
                'text/html': ''}

        data['text/html'] += '<form method="post" name=%s ><p><input
type="text" ></p></form>' % self.identifier
        data['application/json'] = {'constructor_info': ('normal_mean',
[self.mean, self.sd, self.n], {})}
        publish_display_data("NormalMean", data)
        if return_data:
            return data

    def check_answer(self, answer):
        if np.fabs(answer - self.correct_answer) / np.std(self.sequence) <
self.tol:
            data = self.publish(return_data=True)
            data['text/html'] += '\n<p><h2>Good job!</h2></p>\n'
        else:
            self.sequence = self.generate()
            data = self.publish(return_data=True)
            data['text/html'] += '\n<p><h2>Try Again!</h2></p>\n'


NormalMean(10, 3, 6, 'mean_10_sd_3_n_6').publish()


I expect to see a latex rendering of the question with a textbox below it
but I am only getting a text box.

By the way, if I want to see these things in order, I suppose it is best to
use several calls to publish_display_data? Is that right, if so the outputs
are in the order I want them to be rather than
the order of the dict keys (which I cannot control).

Thanks,

Jonathan


-- 
Jonathan Taylor
Dept. of Statistics
Sequoia Hall, 137
390 Serra Mall
Stanford, CA 94305
Tel:   650.723.9230
Fax:   650.725.8977
Web: http://www-stat.stanford.edu/~jtaylo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20120613/056ca176/attachment.html>


More information about the IPython-dev mailing list