changeset 0:7ae1c661a86c draft

Uploaded
author iuc
date Mon, 28 Jul 2014 03:21:07 -0400
parents
children 8e8555ca07f9
files datatypes_conf.xml ipynb.py repository_dependencies.xml
diffstat 3 files changed, 81 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datatypes_conf.xml	Mon Jul 28 03:21:07 2014 -0400
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+  <datatypes>
+   <datatype_files>
+     <datatype_file name="ipynb.py"/>
+   </datatype_files>
+   <registration>
+        <datatype extension="ipynb" type="galaxy.datatypes.ipynb:Ipynb" display_in_upload="True" />
+   </registration>
+   <sniffers>
+        <sniffer type="galaxy.datatypes.ipnb:Ipynb"/>
+   </sniffers>
+</datatypes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipynb.py	Mon Jul 28 03:21:07 2014 -0400
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+
+from galaxy.datatypes.json import Json
+from galaxy.datatypes.data import get_file_peek
+import subprocess
+import tempfile
+import json
+import os
+
+class Ipynb( Text ):
+    file_ext = "ipynb"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        if not dataset.dataset.purged:
+            dataset.peek = get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = "IPython Notebook"
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disc'
+
+    def sniff( self, filename ):
+        """
+            Try to load the string with the json module. If successful it's a json file.
+        """
+        try:
+            json.load( filename )
+            if a.get('nbformat', False) != False and a.get('metadata', False):
+                return True
+            else:
+                return False
+        except:
+            return False
+
+    def display_data(self, trans, dataset, preview=False, filename=None, to_ext=None, chunk=None, **kwd):
+        preview = util.string_as_bool( preview )
+        if chunk:
+            return self.get_chunk(trans, dataset, chunk)
+        elif to_ext or not preview:
+            return self._serve_raw(trans, dataset, to_ext)
+        else:
+            ofile_handle = tempfile.NamedTemporaryFile(delete=False)
+            ofilename = file_handle.name
+            ofile_handle.close()
+            try:
+                cmd = 'ipython nbconvert --to html --template basic %s %s' % (dataset.file_name, ofilename)
+                subprocess.call(cmd)
+                ofilename = '%s.html' % ofilename
+            except:
+                ofilename = dataset.file_name
+                log.exception( 'Command "%s" failed. Could not convert the IPython Notebook to HTML, defaulting to plain text.' % cmd )
+            return open( ofilename )
+            """return trans.fill_template( "/dataset/tabular_chunked.mako",
+                        dataset = dataset,
+                        chunk = self.get_chunk(trans, dataset, 0),
+                        column_number = column_number,
+                        column_names = column_names,
+                        column_types = column_types )"""
+
+    def set_meta( self, dataset, **kwd ):
+        """
+        Set the number of models in dataset.
+        """
+        pass
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/repository_dependencies.xml	Mon Jul 28 03:21:07 2014 -0400
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<repositories description="The IPython Notebook format requires the JSON datatyp format definition.">
+    <repository changeset_revision="3b76639ad0bb" name="datatyp_json" owner="iuc" toolshed="https://testtoolshed.g2.bx.psu.edu" />
+</repositories>