annotate ipynb.py @ 3:d25397969a4c draft default tip

Uploaded
author iuc
date Mon, 28 Jul 2014 04:42:50 -0400
parents ed64ded866dd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
1 # -*- coding: utf-8 -*-
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
2
3
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
3 #from galaxy.datatypes.json_datatyp import Json as JsonClass
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
4 from galaxy.datatypes.data import Text
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
5 from galaxy.datatypes.data import get_file_peek
3
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
6 from galaxy import util
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
7 import subprocess
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
8 import tempfile
3
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
9 import logging
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
10 import json
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
11 import os
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
12
3
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
13 log = logging.getLogger(__name__)
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
14
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
15 #class Ipynb( JsonClass ):
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
16 class Ipynb( Text ):
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
17 file_ext = "ipynb"
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
18
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
19 def set_peek( self, dataset, is_multi_byte=False ):
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
20 if not dataset.dataset.purged:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
21 dataset.peek = get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
22 dataset.blurb = "IPython Notebook"
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
23 else:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
24 dataset.peek = 'file does not exist'
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
25 dataset.blurb = 'file purged from disc'
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
26
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
27 def sniff( self, filename ):
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
28 """
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
29 Try to load the string with the json module. If successful it's a json file.
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
30 """
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
31 try:
1
8e8555ca07f9 Uploaded
iuc
parents: 0
diff changeset
32 ipynb = json.load( open(filename) )
8e8555ca07f9 Uploaded
iuc
parents: 0
diff changeset
33 if ipynb.get('nbformat', False) != False and ipynb.get('metadata', False):
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
34 return True
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
35 else:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
36 return False
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
37 except:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
38 return False
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
39
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
40 def display_data(self, trans, dataset, preview=False, filename=None, to_ext=None, chunk=None, **kwd):
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
41 preview = util.string_as_bool( preview )
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
42 if chunk:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
43 return self.get_chunk(trans, dataset, chunk)
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
44 elif to_ext or not preview:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
45 return self._serve_raw(trans, dataset, to_ext)
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
46 else:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
47 ofile_handle = tempfile.NamedTemporaryFile(delete=False)
3
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
48 ofilename = ofile_handle.name
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
49 ofile_handle.close()
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
50 try:
3
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
51 cmd = 'ipython nbconvert --to html --template basic %s --output %s' % (dataset.file_name, ofilename)
d25397969a4c Uploaded
iuc
parents: 2
diff changeset
52 subprocess.call(cmd, shell=True)
0
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
53 ofilename = '%s.html' % ofilename
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
54 except:
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
55 ofilename = dataset.file_name
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
56 log.exception( 'Command "%s" failed. Could not convert the IPython Notebook to HTML, defaulting to plain text.' % cmd )
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
57 return open( ofilename )
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
58
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
59 def set_meta( self, dataset, **kwd ):
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
60 """
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
61 Set the number of models in dataset.
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
62 """
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
63 pass
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
64
7ae1c661a86c Uploaded
iuc
parents:
diff changeset
65