Mercurial > repos > rmarenco > hubarchivecreator
comparison Datatype.py @ 10:acc233161f50 draft
planemo upload for repository https://github.com/goeckslab/hub-archive-creator commit 1b1063f90004764bcf504f4340738eca5c4b1f9d
| author | rmarenco |
|---|---|
| date | Thu, 21 Jul 2016 05:58:51 -0400 |
| parents | 816956489fe9 |
| children | d05236b15f81 |
comparison
equal
deleted
inserted
replaced
| 9:4f9847539a28 | 10:acc233161f50 |
|---|---|
| 4 """ | 4 """ |
| 5 Super Class of the managed datatype | 5 Super Class of the managed datatype |
| 6 """ | 6 """ |
| 7 | 7 |
| 8 import os | 8 import os |
| 9 import tempfile | |
| 9 | 10 |
| 10 from util import subtools | 11 from util import subtools |
| 11 | 12 |
| 12 | 13 |
| 13 class Datatype(object): | 14 class Datatype(object): |
| 14 | 15 |
| 15 twoBitFile = None | 16 twoBitFile = None |
| 16 | 17 |
| 17 def __init__( self, input_fasta_file, extra_files_path, tool_directory ): | 18 input_fasta_file = None |
| 19 extra_files_path = None | |
| 20 tool_directory = None | |
| 18 | 21 |
| 19 self.input_fasta_file = input_fasta_file | 22 mySpecieFolderPath = None |
| 20 self.extra_files_path = extra_files_path | 23 myTrackFolderPath = None |
| 21 self.tool_directory = tool_directory | |
| 22 | 24 |
| 23 self.twoBitFile = None | 25 twoBitFile = None |
| 26 chromSizesFile = None | |
| 24 | 27 |
| 25 # Construction of the arborescence | 28 def __init__(self): |
| 26 # TODO: Change the hard-coded path with a input based one | |
| 27 self.mySpecieFolderPath = os.path.join(extra_files_path, "myHub", "dbia3") | |
| 28 | 29 |
| 29 # TODO: Refactor the name of the folder "tracks" into one variable, and should be inside TrackHub object | 30 not_init_message = "The {0} is not initialized." \ |
| 30 self.myTrackFolderPath = os.path.join(self.mySpecieFolderPath, "tracks") | 31 "Did you use pre_init static method first?" |
| 32 if Datatype.input_fasta_file is None: | |
| 33 raise TypeError(not_init_message.format('reference genome')) | |
| 34 if Datatype.extra_files_path is None: | |
| 35 raise TypeError(not_init_message.format('track Hub path')) | |
| 36 if Datatype.tool_directory is None: | |
| 37 raise TypeError(not_init_message.format('tool directory')) | |
| 31 | 38 |
| 32 # TODO: Redundant, should be refactored because they are all doing it...into hubArchiveCreator? | 39 |
| 40 @staticmethod | |
| 41 def pre_init(reference_genome, two_bit_path, chrom_sizes_file, | |
| 42 extra_files_path, tool_directory, specie_folder, tracks_folder): | |
| 43 Datatype.extra_files_path = extra_files_path | |
| 44 Datatype.tool_directory = tool_directory | |
| 45 | |
| 46 # TODO: All this should be in TrackHub and not in Datatype | |
| 47 Datatype.mySpecieFolderPath = specie_folder | |
| 48 Datatype.myTrackFolderPath = tracks_folder | |
| 49 | |
| 50 Datatype.input_fasta_file = reference_genome | |
| 51 | |
| 33 # 2bit file creation from input fasta | 52 # 2bit file creation from input fasta |
| 34 if not Datatype.twoBitFile: | 53 Datatype.twoBitFile = two_bit_path |
| 35 print "We create the self.twoBit in " + self.__class__.__name__ | 54 Datatype.chromSizesFile = chrom_sizes_file |
| 36 Datatype.twoBitFile = subtools.faToTwoBit(self.input_fasta_file, self.mySpecieFolderPath) | |
| 37 | 55 |
| 38 # TODO: Remove this by saying to all children classes to use "Datatype.twoBitFile" instead | 56 @staticmethod |
| 39 self.twoBitFile = Datatype.twoBitFile | 57 def get_largest_scaffold_name(self): |
| 58 # We can get the biggest scaffold here, with chromSizesFile | |
| 59 with open(Datatype.chromSizesFile.name, 'r') as chrom_sizes: | |
| 60 # TODO: Check if exists | |
| 61 return chrom_sizes.readline().split()[0] | |
| 40 | 62 |
| 63 # TODO: Rename for PEP8 | |
| 41 def getShortName( self, name_to_shortify ): | 64 def getShortName( self, name_to_shortify ): |
| 42 # Slice to get from Long label the short label | 65 # Slice to get from Long label the short label |
| 43 short_label_slice = slice(0, 15) | 66 short_label_slice = slice(0, 15) |
| 44 | 67 |
| 45 return name_to_shortify[short_label_slice] | 68 return name_to_shortify[short_label_slice] |
