Mercurial > repos > bcclaywell > microbiome_pplacer_suite
comparison taxtastic.py @ 2:ce6db18f5fd3 draft
Uploaded
| author | bcclaywell |
|---|---|
| date | Thu, 26 Feb 2015 19:31:20 -0500 |
| parents | d4690e65afcd |
| children |
comparison
equal
deleted
inserted
replaced
| 1:c8cc6529038c | 2:ce6db18f5fd3 |
|---|---|
| 1 import os | |
| 2 import zipfile | |
| 3 from galaxy.datatypes.binary import Binary | |
| 4 from galaxy.datatypes.data import Text | |
| 5 | |
| 6 class Refpkg(Text): | |
| 7 composite_type = "basic" | |
| 8 | |
| 9 def __init__(self, **kwd): | |
| 10 Text.__init__(self, **kwd) | |
| 11 self.add_composite_file("CONTENTS.json") | |
| 12 | |
| 13 def get_mime(self): | |
| 14 return "application/json" | |
| 15 | |
| 16 class RefpkgZip(Binary): | |
| 17 file_ext = "refpkg.zip" | |
| 18 | |
| 19 def __init__(self, **kwd): | |
| 20 Binary.__init__(self, **kwd) | |
| 21 | |
| 22 def sniff(self, filename): | |
| 23 if not zipfile.is_zipfile(filename): | |
| 24 return False | |
| 25 contains_contents_file = False | |
| 26 zip_file = zipfile.ZipFile(filename, "r") | |
| 27 for name in zip_file.namelist(): | |
| 28 if os.path.basename(name) == "CONTENTS.json": | |
| 29 contains_contents_file = True | |
| 30 break | |
| 31 zip_file.close() | |
| 32 if not contains_contents_file: | |
| 33 return False | |
| 34 return True | |
| 35 | |
| 36 def get_mime(self): | |
| 37 return "application/zip" | |
| 38 | |
| 39 class OfficeXlsx(Binary): | |
| 40 file_ext = "xlsx" | |
| 41 | |
| 42 def __init__(self, **kwd): | |
| 43 Binary.__init__(self, **kwd) | |
| 44 | |
| 45 # TODO: this should check for an xl/ directory also | |
| 46 def sniff(self, filename): | |
| 47 if not zipfile.is_zipfile(filename): | |
| 48 return False | |
| 49 contains_contents_file = False | |
| 50 zip_file = zipfile.ZipFile(filename, "r") | |
| 51 for name in zip_file.namelist(): | |
| 52 if os.path.basename(name) == "[Content_Types].xml": | |
| 53 contains_contents_file = True | |
| 54 break | |
| 55 zip_file.close() | |
| 56 if not contains_contents_file: | |
| 57 return False | |
| 58 return True | |
| 59 | |
| 60 def get_mime(self): | |
| 61 return "application/zip" | |
| 62 | |
| 63 Binary.register_sniffable_binary_format("refpkg.zip", "refpkg.zip", RefpkgZip) | |
| 64 Binary.register_sniffable_binary_format("xlsx", "xlsx", OfficeXlsx) |
