Mercurial > repos > iuc > datatyp_ipynb
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>