/lib/galaxy/datatypes/ngsindex.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 77 lines · 46 code · 11 blank · 20 comment · 4 complexity · b92b0ae2dcfed0c281de9a731443bb68 MD5 · raw file

  1. """
  2. NGS indexes
  3. """
  4. import os
  5. import logging
  6. from metadata import MetadataElement
  7. from images import Html
  8. log = logging.getLogger(__name__)
  9. class BowtieIndex( Html ):
  10. """
  11. base class for BowtieIndex
  12. is subclassed by BowtieColorIndex and BowtieBaseIndex
  13. """
  14. MetadataElement( name="base_name", desc="base name for this index set", default='galaxy_generated_bowtie_index', set_in_upload=True, readonly=True )
  15. MetadataElement( name="sequence_space", desc="sequence_space for this index set", default='unknown', set_in_upload=True, readonly=True )
  16. file_ext = 'bowtie_index'
  17. is_binary = True
  18. composite_type = 'auto_primary_file'
  19. allow_datatype_change = False
  20. def generate_primary_file( self, dataset = None ):
  21. """
  22. This is called only at upload to write the html file
  23. cannot rename the datasets here - they come with the default unfortunately
  24. """
  25. return '<html><head></head><body>AutoGenerated Primary File for Composite Dataset</body></html>'
  26. def regenerate_primary_file(self,dataset):
  27. """
  28. cannot do this until we are setting metadata
  29. """
  30. bn = dataset.metadata.base_name
  31. flist = os.listdir(dataset.extra_files_path)
  32. rval = ['<html><head><title>Files for Composite Dataset %s</title></head><p/>Comprises the following files:<p/><ul>' % (bn)]
  33. for i,fname in enumerate(flist):
  34. sfname = os.path.split(fname)[-1]
  35. rval.append( '<li><a href="%s">%s</a>' % ( sfname, sfname ) )
  36. rval.append( '</ul></html>' )
  37. f = file(dataset.file_name,'w')
  38. f.write("\n".join( rval ))
  39. f.write('\n')
  40. f.close()
  41. def set_peek( self, dataset, is_multi_byte=False ):
  42. if not dataset.dataset.purged:
  43. dataset.peek = "Bowtie index file (%s)" % ( dataset.metadata.sequence_space )
  44. dataset.blurb = "%s space" % ( dataset.metadata.sequence_space )
  45. else:
  46. dataset.peek = 'file does not exist'
  47. dataset.blurb = 'file purged from disk'
  48. def display_peek( self, dataset ):
  49. try:
  50. return dataset.peek
  51. except:
  52. return "Bowtie index file"
  53. def sniff( self, filename ):
  54. return False
  55. class BowtieColorIndex( BowtieIndex ):
  56. """
  57. Bowtie color space index
  58. """
  59. MetadataElement( name="sequence_space", desc="sequence_space for this index set", default='color', set_in_upload=True, readonly=True )
  60. file_ext = 'bowtie_color_index'
  61. class BowtieBaseIndex( BowtieIndex ):
  62. """
  63. Bowtie base space index
  64. """
  65. MetadataElement( name="sequence_space", desc="sequence_space for this index set", default='base', set_in_upload=True, readonly=True )
  66. file_ext = 'bowtie_base_index'