Mercurial > repos > yating-l > jbrowse_hub
diff trackObject.py @ 5:e7c80e9b70ae draft
planemo upload for repository https://github.com/Yating-L/jbrowse_hub commit f18ea51d27ec7addfa6413716391cfefebc8acbc-dirty
author | yating-l |
---|---|
date | Tue, 14 Mar 2017 12:24:37 -0400 |
parents | e4f3f2ed4fa5 |
children | e1f188b43750 |
line wrap: on
line diff
--- a/trackObject.py Fri Mar 10 14:57:36 2017 -0500 +++ b/trackObject.py Tue Mar 14 12:24:37 2017 -0400 @@ -7,46 +7,59 @@ import blastxmlToGff3 class trackObject: - def __init__(self, dataFile, dataType, chrom_size): - self.dataFile = dataFile - self.fileName = os.path.basename(dataFile) - self.dataType = dataType + def __init__(self, chrom_size, genome, extra_files_path): self.chrom_size = chrom_size + outputDirect = os.path.join(extra_files_path, genome) + self.raw_folder = os.path.join(outputDirect, 'raw') + print self.raw_folder + self.tracks = [] try: - if not os.path.exists('raw'): - os.mkdir('raw') + if os.path.exists(self.raw_folder): + if os.path.isdir(self.raw_folder): + shutil.rmtree(self.raw_folder) + else: + os.remove(self.raw_folder) + os.makedirs(self.raw_folder) except OSError as oserror: print "Cannot create raw folder error({0}): {1}".format(oserror.errno, oserror.strerror) - else: - self.raw_folder = 'raw' - def addToRaw(self): - des_path = os.path.join(self.raw_folder, self.fileName) - if self.dataType == 'gff3' or self.dataType == 'fasta' or self.dataType == 'bam' or self.dataType == 'bigwig' or self.dataType == 'bai': - if self.dataType == 'gff3': - self.checkGff3() + def addToRaw(self, dataFile, dataType): + ''' + Convert gff3, BED, blastxml and gtf files into gff3 files + and store converted files in folder 'raw' + ''' + fileName = os.path.basename(dataFile) + des_path = os.path.join(self.raw_folder, fileName) + if dataType == 'gff3' or dataType == 'fasta' or dataType == 'bam' or dataType == 'bigwig' or dataType == 'bai': + if dataType == 'gff3': + self.checkGff3(dataFile) try: - shutil.copyfile(self.dataFile, des_path) + shutil.copyfile(dataFile, des_path) except shutil.Error as err1: print "Cannot move file, error({0}: {1})".format(err1.errno, err1.strerror) except IOError as err2: print "Cannot move file, error({0}: {1})".format(err2.errno, err2.strerror) - elif self.dataType == 'bedSimpleRepeats': - bedToGff3.bedToGff3(self.dataFile, self.chrom_size, 'trfbig', des_path) - elif self.dataType == 'bedSpliceJunctions': - bedToGff3.bedToGff3(self.dataFile, self.chrom_size, 'regtools', des_path) - elif self.dataType == 'blastxml': - blastxmlToGff3.blastxml2gff3(self.dataFile, des_path) - elif self.dataType == 'gtf': - utils.gtfToGff3(self.dataFile, des_path, self.chrom_size) + elif dataType == 'bedSimpleRepeats': + bedToGff3.bedToGff3(dataFile, self.chrom_size, 'trfbig', des_path) + elif dataType == 'bedSpliceJunctions': + bedToGff3.bedToGff3(dataFile, self.chrom_size, 'regtools', des_path) + elif dataType == 'blastxml': + blastxmlToGff3.blastxml2gff3(dataFile, des_path) + elif dataType == 'gtf': + utils.gtfToGff3(dataFile, des_path, self.chrom_size) + track = { + 'fileName': fileName, + 'dataType': dataType + } + self.tracks.append(track) - def checkGff3(self): - with open(self.dataFile, 'r') as f: + def checkGff3(self, dataFile): + with open(dataFile, 'r') as f: for line in f: if not line.startswith('#'): seq_type = line.rstrip().split('\t')[2] if seq_type == 'transcript': - self.dataType = 'gff3-transcript' + dataType = 'gff3-transcript' break if seq_type == 'mRNA': break