Mercurial > repos > sanbi-uwc > neo4j_datatypes
comparison neo4j.py @ 10:ce5df18856ee draft
planemo upload for repository https://github.com/SANBI-SA/tools-sanbi-uwc/tree/master/datatypes/neo4j_datatypes commit 31097469911a6200b265a1a8dcea285b3a65b6a9
| author | sanbi-uwc |
|---|---|
| date | Wed, 18 May 2016 09:17:11 -0400 |
| parents | f4714c838f27 |
| children | 6a177f046b73 |
comparison
equal
deleted
inserted
replaced
| 9:f4714c838f27 | 10:ce5df18856ee |
|---|---|
| 3 """ | 3 """ |
| 4 import logging | 4 import logging |
| 5 import sys | 5 import sys |
| 6 import os | 6 import os |
| 7 | 7 |
| 8 from galaxy.datatypes.images import Html | 8 #from galaxy.datatypes.images import Html |
| 9 from galaxy.datatypes.data import Data, Text, Html | 9 from galaxy.datatypes.data import Data, Text, Html |
| 10 from galaxy.datatypes.metadata import MetadataElement | 10 #from galaxy.datatypes.metadata import MetadataElement |
| 11 | 11 |
| 12 gal_Log = logging.getLogger(__name__) | 12 gal_Log = logging.getLogger(__name__) |
| 13 verbose = True | 13 verbose = True |
| 14 | 14 |
| 15 | 15 |
| 16 class Neo4j(Html): | 16 class Neo4j(object): |
| 17 """ | 17 """ |
| 18 base class to use for neostore datatypes | 18 base class to use for neostore datatypes |
| 19 derived from html - composite datatype elements | 19 derived from html - composite datatype elements |
| 20 stored in extra files path | 20 stored in extra files path |
| 21 """ | 21 """ |
| 22 MetadataElement( name='neostore', default=None, desc='Neo4j NeoStore File', readonly=True, visible=True, set_in_upload=True, no_value=None ) | |
| 23 MetadataElement( name='neostore_count_file', default=None, desc='Neo4j Count File', readonly=True, visible=True, set_in_upload=True, no_value=None ) | |
| 24 MetadataElement( name="neostore_labeltokenstore_db_file", default=None, desc="Neostore LabelTokenStore File", readonly=True, visible=True, no_value=None ) | |
| 25 MetadataElement( name="neostore_nodestore_file", default=None, desc="Neostore NodeStore File", readonly=True, visible=True, no_value=None) | |
| 26 MetadataElement( name="neostore_propertystore_file", default=None, desc="Neostore Property Store File", readonly=True, visible=True, no_value=None) | |
| 27 MetadataElement( name="neostore_relationship_group_file", default=None, desc="Neostore Relationship Group File", readonly=True, visible=True, no_value=None) | |
| 28 MetadataElement( name="neostore_relationship_file", default=None, desc="Neostore Relationship File", readonly=True, visible=True, no_value=None) | |
| 29 MetadataElement( name="neostore_relationship_type_file", default=None, desc="Neostore Relationship Type File", readonly=True, visible=True, no_value=None) | |
| 30 MetadataElement( name="neostore_schema_store_file", default=None, desc="Neostore Schema Store File", readonly=True, visible=True, no_value=None) | |
| 31 MetadataElement( name="neostore_transaction_db_file", default=None, desc="Neostore Transaction File", readonly=True, visible=True, no_value=None) | |
| 32 | |
| 33 composite_type = 'auto_primary_file' | |
| 34 #composite_type = 'basic' | |
| 35 allow_datatype_change = False | |
| 36 file_ext = 'neo4j' | |
| 37 | |
| 38 def generate_primary_file( self, dataset=None ): | |
| 39 rval = ['<html><head><title>Neo4j Galaxy Composite Dataset </title></head><p/>'] | |
| 40 rval.append('<div>This composite dataset is composed of the following files:<p/><ul>') | |
| 41 for composite_name, composite_file in self.get_composite_files( dataset=dataset ).iteritems(): | |
| 42 fn = composite_name | |
| 43 opt_text = '' | |
| 44 if composite_file.optional: | |
| 45 opt_text = ' (optional)' | |
| 46 if composite_file.get('description'): | |
| 47 rval.append( '<li><a href="%s" type="application/binary">%s (%s)</a>%s</li>' % ( fn, fn, composite_file.get('description'), opt_text ) ) | |
| 48 else: | |
| 49 rval.append( '<li><a href="%s" type="application/binary">%s</a>%s</li>' % ( fn, fn, opt_text ) ) | |
| 50 rval.append( '</ul></div></html>' ) | |
| 51 return "\n".join( rval ) | |
| 52 | |
| 53 def regenerate_primary_file(self, dataset): | |
| 54 """ | |
| 55 cannot do this until we are setting metadata | |
| 56 """ | |
| 57 efp = dataset.extra_files_path | |
| 58 flist = os.listdir(efp) | |
| 59 rval = ['<html><head><title>Files for Composite Dataset %s</title></head><body><p/>Composite %s contains:<p/><ul>' % (dataset.name, dataset.name)] | |
| 60 for i, fname in enumerate(flist): | |
| 61 sfname = os.path.split(fname)[-1] | |
| 62 f, e = os.path.splitext(fname) | |
| 63 rval.append( '<li><a href="%s">%s</a></li>' % ( sfname, sfname) ) | |
| 64 rval.append( '</ul></body></html>' ) | |
| 65 f = file(dataset.file_name, 'w') | |
| 66 f.write("\n".join( rval )) | |
| 67 f.write('\n') | |
| 68 f.close() | |
| 69 | |
| 70 def get_mime(self): | 22 def get_mime(self): |
| 71 """Returns the mime type of the datatype""" | 23 """Returns the mime type of the datatype""" |
| 72 return 'text/html' | 24 return 'text/html' |
| 73 | 25 |
| 74 def set_peek(self, dataset, is_multi_byte=False): | 26 def set_peek(self, dataset, is_multi_byte=False): |
| 113 | 65 |
| 114 | 66 |
| 115 class Neo4jDB(Neo4j, Data): | 67 class Neo4jDB(Neo4j, Data): |
| 116 """Class for neo4jDB database files.""" | 68 """Class for neo4jDB database files.""" |
| 117 file_ext = 'neostore' | 69 file_ext = 'neostore' |
| 70 allow_datatype_change = False | |
| 71 composite_type = 'basic' | |
| 118 | 72 |
| 119 def __init__(self, **kwd): | 73 def __init__(self, **kwd): |
| 120 Data.__init__(self, **kwd) | 74 Data.__init__(self, **kwd) |
| 121 self.add_composite_file('neostore', substitute_name_with_metadata='neostore', is_binary=True) | 75 self.add_composite_file('neostore', substitute_name_with_metadata='neostore', is_binary=True) |
| 122 self.add_composite_file('neostore.id', substitute_name_with_metadata='neostore', is_binary=True) | 76 self.add_composite_file('neostore.id', substitute_name_with_metadata='neostore', is_binary=True) |
| 153 self.add_composite_file('neostore.transaction.db.0', substitute_name_with_metadata='neostore_count_file', is_binary=True) | 107 self.add_composite_file('neostore.transaction.db.0', substitute_name_with_metadata='neostore_count_file', is_binary=True) |
| 154 | 108 |
| 155 | 109 |
| 156 if __name__ == '__main__': | 110 if __name__ == '__main__': |
| 157 import doctest | 111 import doctest |
| 158 | |
| 159 | |
| 160 doctest.testmod(sys.modules[__name__]) | 112 doctest.testmod(sys.modules[__name__]) |
